![]() |
1
4
是的,NT的wchar总是utf-16le。 (对于日本安装的__System codepage_,实际上是CP932/SHIFT JIS,为了许多非Unicode本机、FAT32路径等应用程序的利益,NT中仍然存在。) 但是,wchar-t不能保证是16位的,在Linux上,它不能保证是16位的,使用的是utf-32(ucs-4)。所以wcstombs不太可能快乐。 正确的做法是使用像iconv这样的库,以内部使用的任何格式读取它——大概是wchar_t。 能够 试着自己通过插入字节来破解它,但是你可能会把代理程序搞错。
事实上,由于所有的\0,Linux不能使用UTF-16作为区域设置默认编码。 |
![]() |
2
6
最简单的方法是将文件从utf16转换为utf8本机UNIX编码,然后读取它,
您还可以使用ICONV(3)(请参阅man 3 ICONV)使用C转换字符串。大多数其他语言也具有到ICONV的绑定。 您可以使用任何像en-us.utf-8这样通常是默认的utf-8语言环境 在大多数Linux发行版上。 |
![]() |
3
2
您可以读取为二进制文件,然后进行自己的快速转换: http://unicode.org/faq/utf_bom.html#utf16-3 但使用一个能正确处理无效序列的库(如libiconv)可能更安全。 |
![]() |
4
1
我强烈建议使用Unicode编码作为程序的内部表示。使用utf-16或utf-8。如果您在内部使用UTF-16,那么显然不需要翻译。如果使用UTF-8,则可以将区域设置与
|
![]() |
M - · 为什么两个相同的表情符号不相等? 2 年前 |
![]() |
Mohsen · 将字符串从Windows 1256转换为UTF-8 6 年前 |
![]() |
AMINA ARSHAD · 从字符转换为Unicode数字时出错 6 年前 |
![]() |
Taqwa · 在C#[已关闭]中将上标转换为Unicode 6 年前 |