linux系统语言环境为GB18030,接收utf-8格式的报文为乱码

linux系统语言环境为GB18030,接收utf-8格式的报文为乱码,第1张

作为一个合格的程序员,在程序内部进行字符串传输和处理时,都必须使用 utf8 编码,只有在进行对外输出存储和显示的时候,才转换成 locale 编码。从外部读取字符串,也要先转换成 utf8 后在进行程序内处理。另外应用程序内部不应该嵌入编码字符串,应该只存在英文字符串,所有 CJK 字符串,都应该从外部专门读取,读取后或者生成外部字符串数据文件时,必须确定编码。
Windows 其实也是如此,不过 Windows 的输入输出是自动进行转换的,内部处理编码是 UCS 的某个吧?

你要查看下原始编码是什么,然后再转换成UTF8格式的
下面是将GB2312转成UTF8的
string utfinfo = stringEmpty;
Encoding utf8 = EncodingUTF8;
Encoding gb2312 = EncodingGetEncoding("gb2312");
byte[] bytes = EncodingDefaultGetBytes(strInfo);
byte[] asciiBytes = EncodingConvert(gb2312, utf8, bytes);
char[] asciiChars = new char[utf8GetCharCount(asciiBytes, 0, asciiBytesLength)];
utf8GetChars(asciiBytes, 0, asciiBytesLength, asciiChars, 0);
return utfinfo = new string(asciiChars);


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13059427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存