![]() |
1
8
UCS编码是固定宽度的,并用每个字符使用的字节数来标记。例如,ucs-2要求每个字符2个字节。代码点超出可用范围的字符不能用UCS编码。 UTF编码是可变宽度的,并用存储字符的最小位数标记。例如,UTF-16要求每个字符至少16位(2字节)。具有较大代码点的字符使用更大的字节数进行编码——以UTF-16表示的星型字符为4个字节。
对于现代系统,最合理的存储和传输编码是UTF-8。在有些特殊情况下,其他的可能是合适的——UTF-7用于旧邮件服务器,UTF-16用于写得不好的文本编辑器——但UTF-8最常见。 首选的内部代表将取决于您的平台。在Windows中,它是UTF-16。在Unix中,它是ucs-4。各有其优点:
最后,一些系统使用UTF-8作为内部格式。如果需要与现有的基于ASCII或ISO-8859的系统进行交互操作,这是很好的,因为在UTF-8文本的中间不存在空字节——它们是UTF-16或UCS-4格式。 |
![]() |
2
3
|
![]() |
3
2
我建议:
UTF-8在存储和有线情况下的优势在于,机器端隙不是一个因素。使用固定大小字符的优点,如
|
![]() |
4
0
UTC是协调世界时,不是字符集(我没有找到任何称为UTC的字符集)。
对于内部表示,您可能希望使用
对于存储,如果大多数数据不是ASCII(即code>=128),则可能需要使用与序列化几乎相同的utf-16
由于utf-16可以是小尾数或大尾数,对于线传输,请尝试将其转换为与体系结构无关的utf-8。 |
![]() |
5
0
在代码内部的内部表示中,最好对欧洲字符和非欧洲字符都这样做: UNNNN 在\u0020到\u007e范围内的字符以及少量空白(例如行尾)可以作为普通字符写入。以上任何内容,如果您将其作为普通字符编写,则它将只在代码页中编译(例如,在法国可以,但在俄罗斯可以,在俄罗斯可以,但在日本可以,在中国可以,但在美国可以,等等)。 |
![]() |
M - · 为什么两个相同的表情符号不相等? 2 年前 |
![]() |
Mohsen · 将字符串从Windows 1256转换为UTF-8 7 年前 |
![]() |
AMINA ARSHAD · 从字符转换为Unicode数字时出错 7 年前 |
![]() |
Taqwa · 在C#[已关闭]中将上标转换为Unicode 7 年前 |