u 转码的问题

[复制链接]
查看11 | 回复7 | 2021-1-27 05:59:53 | 显示全部楼层 |阅读模式
显示一个unicode字符串的中文下面的两种方式一个直接用messagebox直接显示,另一个是吧字符串放到文本中读取在显示
::MessageBox(NULL,"\u4ea49006",NULL,MB_OK);//没问题,可以显示中文
CStdioFilefile;
CStringszLine;
file.Open("c:\\3.txt",CFile::modeRead);//打开文件
file.ReadString(szLine);
//szLine.Replace("\\u","\u");//这样替换也不行
::MessageBox(NULL,szLine,NULL,MB_OK);//显示的是"\u4ea49006"
直接messabox可以显示出中文,但是如果吧“\u4ea49006”放到文本中,在读取显示的就是“\u4ea49006”而不是中文,用Replace替换的还是不行替换后结果变为了“u4ea49006”
如果想读取文本中的Unicode字符串在显示中文请问怎么做呢
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:59:53 | 显示全部楼层
http://www.cnblogs.com/fanyong/archive/2013/06/26/3157476.html
回复

使用道具 举报

千问 | 2021-1-27 05:59:53 | 显示全部楼层
引用1楼schlafenhamster的回复:http://www.cnblogs.com/fanyong/archive/2013/06/26/3157476.html
没看懂,请问vc要怎么写呢
回复

使用道具 举报

千问 | 2021-1-27 05:59:53 | 显示全部楼层
\u被识别是编译器处理的,你把这串字符放到一个文件里,程序读出来就不能自动识别了
回复

使用道具 举报

千问 | 2021-1-27 05:59:53 | 显示全部楼层
写程序将字符串转换啊,再说,写到文本中,还用\u干什么,直接写字符串。

回复

使用道具 举报

千问 | 2021-1-27 05:59:53 | 显示全部楼层
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

回复

使用道具 举报

千问 | 2021-1-27 05:59:53 | 显示全部楼层
1.如果你保存的时候是保存的中文(用txt打开看得到中文),那么你直接读取来显示就可以了.,
2.如果你保存的是\uxxx这样的字符串(用txt打开看是\uxxxx).那么需要你自己读取出来后,再把字符串中的16进制数据转换成内存数据.具体过程是先去掉前面的\u,然后把后面的字符串使用strtol函数,最后一个参数传16,这样来转换成一个long类型,然后再把这long的4个字节转换字符串类型即可.
回复

使用道具 举报

千问 | 2021-1-27 05:59:53 | 显示全部楼层

//
BYTEHexValue(BYTEa)
{
a-=48;//'0'0x30
if(a>32)a-=32;//'a'0x61
if(a>9)a-=7;//'A'0x41
returna;
}
//
BYTEHex2Bytes(BYTEs[2])
{
BYTEv=0;
for(intii=0;ii
调用
//MyMessageBox("\\uC854C854");//“哈哈”
MyMessageBox("\\ua44e0690");//“交逆”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行