举报

求助:outtextxy读取字符串乱码问题

0

使用Easyx编写程序的时候遇到了这样的一个问题:从文本文件(UTF-8编码)中读取一行中英日均有的字符串,如果直接读取到TCHAR类型的数组,outtextxy()的中文和日文输出会乱码成这样(ä½ å¥½ 或者 ÄãºÃ),但是使用char类型的数组,再进行一次多字节字符集转宽字节字符集的操作,则能正常输出文字,大佬们麻烦解答一下,谢谢!

以下是我仿照源程序复刻的一段代码:(输入文本:1955597 - DECO_27 - HIBANA feat Hatsune Miku 初音ミク (Cut Ver) - 3:30 - 873)

#define _CRT_SECURE_NO_WARNINGS_
#include<graphics.h>
#include<stdio.h>

int main()
{
	initgraph(640, 480, EX_SHOWCONSOLE);
	FILE* song_list_ptr;
	char str[1024] = { };		  // 先向char中写入文本,再进行字符集转换,输出正常
	TCHAR str1[1024] = { };
	TCHAR str2[1024] = { };       // 直接向宽字节中写入文本,输出时英文正常,中日文乱码
	song_list_ptr = fopen("./resources/songs_list.txt", "r");
	fgets(str, 2048, song_list_ptr);

	rewind(song_list_ptr);
	fgetws(str2,2048,song_list_ptr);

	printf("str:%s\n",str);		// 控制台输出中日文也是乱码,但是可以在程序开头添加SetConsoleOutputCP(65001)函数解决
	wprintf(_T("str1:%s\n"), str1);
	wprintf(_T("str2:%s\n"), str2);

	settextcolor(WHITE);
	MultiByteToWideChar(CP_UTF8, 0, str, -1, str1, 1024);
	outtextxy(10, 10, str1);
	outtextxy(10, 50, str2);

	fclose(song_list_ptr);
	getchar();
	closegraph();
	return 0;
}
举报
0

这篇文章值得你一看,解决编码疑难问题:

https://blog.csdn.net/alan16356/article/details/140354408?spm=1001.2014.3001.5501 

ava
huidong

2024-7-29

技术讨论社区