Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UTF-8是否可用于阅读/书写亚洲语言?_C#_Unicode_Utf 8 - Fatal编程技术网

C# UTF-8是否可用于阅读/书写亚洲语言?

C# UTF-8是否可用于阅读/书写亚洲语言?,c#,unicode,utf-8,C#,Unicode,Utf 8,我通过web表单(UTF-8)接受用户输入,将其保存到MySQL数据库(使用UTF-8字符集),然后生成一个文本文件(编码为UTF-8)。我想知道使用UTF-8而不是像UCS-2这样的东西是否有可能导致文本损坏?在这种情况下,UTF-8是否足够好? < P>。这可能是您唯一应该考虑使用的编码。 关于这个主题的一些伟大的阅读: UTF-8可以表示任何unicode字符。因此,您应该对UTF-8没有问题 事实上,UTF-8甚至可以表示UCS-2无法表示的一些字符(UCS-2只能通过U+FFFF表示U

我通过web表单(UTF-8)接受用户输入,将其保存到MySQL数据库(使用UTF-8字符集),然后生成一个文本文件(编码为UTF-8)。我想知道使用UTF-8而不是像UCS-2这样的东西是否有可能导致文本损坏?在这种情况下,UTF-8是否足够好?

< P>。这可能是您唯一应该考虑使用的编码。

关于这个主题的一些伟大的阅读:


UTF-8可以表示任何unicode字符。因此,您应该对UTF-8没有问题


事实上,UTF-8甚至可以表示UCS-2无法表示的一些字符(UCS-2只能通过U+FFFF表示U+0000;UTF-8、UTF-16和UCS-4处理所有unicode代码点)

据我所知,UTF-8的设计包含了所有这些早期的unicode变体,因此在UCS-2上使用它应该是合适的。查看并查看侧边栏中的5.0书籍章节;9-12部分应该是你所追求的。

< P>如果你正在处理大量的亚洲文本(比拉丁语文本多),你可能需要考虑UTF16。UTF-8可以准确地表示整个Unicode字符范围,但它针对大部分为ASCII的文本进行了优化。UTF-16在整个系统中具有空间效率


但是UTF-8肯定“足够好”——不会因为您在UTF-16上使用UTF-8而出现腐败现象。

它在Devanagari上运行得非常好。

感谢您的链接-我刚才读到了。我熟悉不同的编码(固定长度字符和可变长度字符),但出于某种原因,我觉得UCS-2可以代表更多的字符。我想我错了UCS-2和UTF-16经常被误解——因为某些代码点是等效的,但对于其他代码点,UTF-16引入了代理代码点来处理并非所有unicode字符都适合16位的事实。顺便提一下,Windows和Java实际上使用的是UTF-16,而不是UCS-2。请注意,UCS-2具有固定长度的字符,而UTF-16具有可变长度的字符。两者都以16位块的形式工作。(还请注意,UCS-2已过时。)它绝对适合存储它们,但是,如果您正在处理CJK,您可能还希望保存要保留的字符串的语言