Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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-16中?_C#_Char_Utf 16 - Fatal编程技术网

C# 哪个字符不在UTF-16中?

C# 哪个字符不在UTF-16中?,c#,char,utf-16,C#,Char,Utf 16,我需要一些UTF-16不支持的字符。我找不到他们。 你能帮帮我吗 char[] letters = tbvstup.Text.ToCharArray(); for (int i = 0; i < letters.Length; i++) { if(letters[i] == 'ě' || letters[i] == 'č' || letters[i] == 'ř' || letters[i] == 'ť' || letters[i] == 'ď' || letters[i] ==

我需要一些UTF-16不支持的字符。我找不到他们。 你能帮帮我吗

char[] letters = tbvstup.Text.ToCharArray();
for (int i = 0; i < letters.Length; i++)
{
    if(letters[i] == 'ě' || letters[i] == 'č' || letters[i] == 'ř' || letters[i] == 'ť' || letters[i] == 'ď' || letters[i] == 'ň' || letters[i] == 'ů')
    {
        ASCII = false;
        pbascii.BackColor = Color.Red;
    }
    if (letters[i] == '˛' || letters[i] == '˘' || letters[i] == 'ˇ' || letters[i] == '˙' || letters[i] == '€' || letters[i] == '‡' || letters[i] == '‰' || letters[i] == 'ě' || letters[i] == 'č' || letters[i] == 'ř' || letters[i] == 'ť' || letters[i] == 'ď' || letters[i] == 'ň' || letters[i] == 'ů')
    {
        ISO = false;
        pbiso.BackColor = Color.Red;   
    }
    if (letters[i] == '€')
    {
        CP852 = false;
        pbcp852.BackColor = Color.Red;
    }
    if (letters[i] == '£')
    {
        CP1250 = false;
        pbcp1250.BackColor = Color.Red;
    }
    if (letters[i] == '') // <-- What do I need to put here?
    {
        UTF16 = false;
        pbutf16.BackColor = Color.Red;
    }
}
char[]letters=tbvstup.Text.tocharray();
for(int i=0;i如果(字母[i]='')/ASCII是一种7位编码,其中字符代码和存储的字节之间存在1:1的关系

CP852CP1250和其他人使用了额外的位(与ASCII相比),因此他们有128个额外的值来编码额外的字符。他们可能会重新定义一些较低的128个值。存储的字符和字节之间仍然存在1:1的关系,如:如果它不适合一个字节,则不能在此代码页中(这就是为什么有这么多代码页)

UTF-8UTF-16非常不同。它们属于Unicode字符集,为任何语言的任何字符分配唯一的数字(现在或古代-甚至象形文字都有自己的)。Unicode值(码点)不要将自己局限于适合某些位数的内容,因为这是编码的工作:UTF-8使用8位单位(也称为字节),并且(对于英语)每个字符主要使用一个字节,但根据需要最多可以使用六个字节。UTF-16使用16位单位,可能需要其中两个单位来编码特定的码点

因此,没有有效字符(由unicode定义)不能在UTF-16中编码,尽管更高值的字符可能需要两个16位单元(“代理项对”)

C#(.Net,实际上)使用16位
char
数据类型,因此实际上在内部使用UTF-16


有关更多信息,请参阅:

ASCII是一种7位编码,其中字符代码和存储的字节之间存在1:1的关系

CP852CP1250和其他人使用了额外的位(与ASCII相比),因此他们有128个额外的值来编码额外的字符。他们可能会重新定义一些较低的128个值。存储的字符和字节之间仍然存在1:1的关系,如:如果它不适合一个字节,则不能在此代码页中(这就是为什么有这么多代码页)

UTF-8UTF-16非常不同。它们属于Unicode字符集,为任何语言的任何字符分配唯一的数字(现在或古代-甚至象形文字都有自己的)。Unicode值(码点)不要将自己局限于适合某些位数的内容,因为这是编码的工作:UTF-8使用8位单位(也称为字节),并且(对于英语)每个字符主要使用一个字节,但根据需要最多可以使用六个字节。UTF-16使用16位单位,可能需要其中两个单位来编码特定的码点

因此,没有有效字符(由unicode定义)不能在UTF-16中编码,尽管更高值的字符可能需要两个16位单元(“代理项对”)

C#(.Net,实际上)使用16位
char
数据类型,因此实际上在内部使用UTF-16


请参阅以了解更多信息:

是一种支持所有Unicode的可变长度编码。哦,请编辑您的问题,告诉我们您使用的是什么语言。您真正的意思是什么?您所说的“不受UTF-16支持”是什么意思?可能类似于右。替换
if(字母[i]='')//是一种支持所有Unicode的可变长度编码。哦,请编辑您的问题,告诉我们您使用的是什么语言。您真正的意思是什么?您所说的“不受UTF-16支持”是什么意思?可能类似于右。替换
if(字母[i]='')//与最初为UCS-2设计的VB4和Win32不同,.NET从一开始就使用UTF-16,这就是规范和文档中这样说的原因。与最初为UCS-2设计的VB4和Win32不同,.NET从一开始就使用UTF-16,这就是规范和文档中这样说的原因。