标签: utf-32

UTF-8,UTF-16和UTF-32

UTF-8,UTF-16和UTF-32有什么区别?

我知道他们都将存储Unicode,并且每个都使用不同的字节数来表示字符.选择一个优于另一个是否有优势?

unicode utf-8 utf-16 utf utf-32

459
推荐指数
11
解决办法
20万
查看次数

UTF-16有什么意义?

我从未明白UTF-16编码的重点.如果您需要能够将字符串视为随机访问(即代码点与代码单元相同),则需要UTF-32,因为UTF-16仍然是可变长度的.如果你不需要这个,那么与UTF-8相比,UTF-16似乎是一种巨大的空间浪费.UTF-16优于UTF-8和UTF-32有什么优势?为什么Windows和Java将它用作本机编码?

utf-8 utf-16 utf character-encoding utf-32

64
推荐指数
3
解决办法
1万
查看次数

Utf8_general_ci或utf8mb4还是......?

utf16或utf32?我正在尝试以多种语言存储内容.某些语言使用双宽字体(例如,日语字体通常是英文字体的两倍).我不确定我应该使用哪种数据库.有关这四个字符集之间差异的任何信息......

localization utf-8 utf-16 utf-32 utf8mb4

28
推荐指数
1
解决办法
3万
查看次数

为什么没有UTF-24?

可能重复:
为什么UTF-32存在而每个字符只需要21位?

UTF-32中的最大Unicode代码点为0x10FFFF.UTF-32有21个信息位和11个多余的空白位.那么为什么没有UTF-24编码(即删除了高字节的UTF-32)用于存储3个字节而不是4个字节的每个代码点?

unicode character-encoding utf-32

23
推荐指数
1
解决办法
3011
查看次数

什么字符编码最适合跨国公司

如果你有一个网站要翻译成世界上的每种语言,因此有一个包含所有这些翻译的数据库,哪种字符编码最好?UTF-128?

如果是这样,所有浏览器都了解所选的编码?字符编码是直接实现还是有隐藏因素?

提前致谢.

utf-8 utf-16 character-encoding utf-32

15
推荐指数
2
解决办法
1万
查看次数

如何创建一个带有代理对的字符串?

我在Jon Skeet的博客上看到了这篇文章,他谈到了字符串翻转.我想尝试他自己展示的例子,但它似乎有效...这让我相信我不知道如何创建一个包含代理对的字符串,这实际上会导致字符串反转失败.如何实际创建一个带有代理对的字符串,以便我自己可以看到失败?

c# string utf-16 surrogate-pairs utf-32

14
推荐指数
2
解决办法
7210
查看次数

Unicode是否具有已定义的最大代码点数?

我已经阅读了很多文章,以便知道Unicode代码点的最大数量是多少,但我没有找到最终答案.

据我所知,Unicode代码点被最小化,使得所有UTF-8 UTF-16和UTF-32编码都能够处理相同数量的代码点.但是这个代码点的数量是多少?

我遇到的最常见的答案是Unicode代码点在0x000000到0x10FFFF(1,114,112代码点)的范围内,但我还在其他地方读过它是1,112,114个代码点.那么要给出一个数字还是比这更复杂的问题?

unicode utf-8 utf-16 codepoint utf-32

11
推荐指数
1
解决办法
9485
查看次数

在C++ 11中读/写/打印UTF-8

我一直在探索C++ 11的新Unicode功能,虽然其他C++ 11编码问题非常有用,但我对cppreference的以下代码片段有疑问 .代码写入然后立即读取以UTF-8编码保存的文本文件.

// Write
std::ofstream("text.txt") << u8"z\u6c34\U0001d10b";

// Read
std::wifstream file1("text.txt");
file1.imbue(std::locale("en_US.UTF8"));
std::cout << "Normal read from file (using default UTF-8/UTF-32 codecvt)\n";
for(wchar_t c; file1 >> c; ) // ?
   std::cout << std::hex << std::showbase << c << '\n';
Run Code Online (Sandbox Code Playgroud)

我的问题非常简单,为什么循环中wchar_t需要for?一个u8文本字符串可以使用一个简单的声明char *和UTF-8编码的位布局应告诉系统字符的宽度.似乎有一些从UTF-8到UTF-32的自动转换(因此wchar_t),但如果是这种情况,为什么转换是必要的?

wchar-t utf-8 codecvt utf-32 c++11

9
推荐指数
1
解决办法
8607
查看次数

如何在Python中获得可靠的unicode字符数?

Google App Engine使用Python 2.5.2,显然启用了UCS4.但GAE数据存储区在内部使用UTF-8.所以,如果你存储U '\ ud834\udd0c'(长2)到数据存储,当你找回它,你会得到 '\ U0001d10c'(长度为1).我试图计算字符串中unicode字符的数量,以便在存储它之前和之后给出相同的结果.因此,在收到字符串之前,我会尝试将字符串规范化(从u'\ ud834\udd0c'到'\ U0001d10c'),然后再计算其长度并将其放入数据存储区.我知道我可以将其编码为UTF-8然后再次解码,但是有更简单/有效的方法吗?

python unicode google-app-engine utf-16 utf-32

8
推荐指数
1
解决办法
1646
查看次数

UTF32和C#问题

所以我遇到了一些字符编码问题.当我将以下两个字符放入UTF32编码的文本文件中时:


?
Run Code Online (Sandbox Code Playgroud)

然后在它们上运行此代码:

System.IO.StreamReader streamReader = 
    new System.IO.StreamReader("input", System.Text.Encoding.UTF32, false);
System.IO.StreamWriter streamWriter = 
    new System.IO.StreamWriter("output", false, System.Text.Encoding.UTF32);

streamWriter.Write(streamReader.ReadToEnd());

streamWriter.Close();
streamReader.Close();
Run Code Online (Sandbox Code Playgroud)

我明白了:

?
?
Run Code Online (Sandbox Code Playgroud)

(相同的字符两次,即输入文件!=输出)

一些可能有用的东西:第一个字符的十六进制:

15 9E 02 00

而对于第二个:

15 9E 00 00

我正在使用gedit创建文本文件,使用单声道用于C#,我正在使用Ubuntu.

如果我指定输入或输出文件的编码也没关系,如果它是UTF32编码,它就不喜欢它.如果输入文件是UTF-8编码,它可以工作.

输入文件如下:

FF FE 00 00 15 9E 02 00 0A 00 00 00 15 9E 00 00 0A 00 00 00

这是一个错误,还是仅仅是我?

谢谢!

c# mono encoding gedit utf-32

8
推荐指数
1
解决办法
5099
查看次数