用C#Silverlight中的ASCII等效字符替换特殊字符

用C#Silverlight中的ASCII等效字符替换特殊字符,c#,silverlight,encoding,ascii,non-ascii-characters,C#,Silverlight,Encoding,Ascii,Non Ascii Characters,我在将非ASCII字符替换为ASCII等效字符时遇到问题 我可以在Windows窗体中简单地执行此操作,方法如下: Encoding.UTF8.GetString(Encoding.GetEncoding("Cyrillic").GetBytes("Crazy text with żźćńąśłęó and other special characters")); 我会收到这样的东西: Encoding.UTF8.GetString(Encoding.GetEncoding("Cyrillic

我在将非ASCII字符替换为ASCII等效字符时遇到问题

我可以在Windows窗体中简单地执行此操作,方法如下:

Encoding.UTF8.GetString(Encoding.GetEncoding("Cyrillic").GetBytes("Crazy text with żźćńąśłęó and other special characters"));
我会收到这样的东西:

Encoding.UTF8.GetString(Encoding.GetEncoding("Cyrillic").GetBytes("Crazy text with żźćńąśłęó and other special characters"));
带有zzcnasleo和其他特殊字符的疯狂文本

问题是,在Silverlight中,我没有像“西里尔字母”这样的编码——我只能使用其中的四种:

utf-8 - UTF8Encoding
utf-16 - UnicodeEncoding (little-endian)
utf-16BE - UnicodeEncoding (big-endian)
utf-16LE - UnicodeEncoding (little-endian)

你知道如何在C#Silverlight中获得同样的结果吗?

我编写了自己的转换器,但它并不那么酷:

private string Convert(string value)
{
    string[] nonAsciiCharacters = new string[] { "À", "Á", "Â", "Ã", "Å", "Ä", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ñ", "Ò", "Ó", "Ô", "Ö", "Õ", "Ù", "Ú", "Û", "Ü", "Ý", "à", "á", "â", "ã", "ä", "å", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "ù", "ú", "û", "ý", "ÿ", "Ā", "ā", "Ă", "ă", "Ą", "ą", "Ć", "ć", "Ĉ", "ĉ", "Ċ", "ċ", "Č", "č", "Ď", "ď", "Đ", "đ", "Ē", "ē", "Ĕ", "ĕ", "Ė", "ė", "Ę", "ę", "Ě", "ě", "Ĝ", "ĝ", "Ğ", "ğ", "Ġ", "ġ", "Ģ", "ģ", "Ĥ", "ĥ", "Ĩ", "ĩ", "Ī", "ī", "Ĭ", "ĭ", "Į", "į", "İ", "ı", "Ĵ", "ĵ", "Ķ", "ķ", "ĸ", "Ĺ", "ĺ", "Ļ", "ļ", "Ľ", "ľ", "Ŀ", "ŀ", "Ł", "ł", "Ń", "ń", "Ņ", "ņ", "Ň", "ň", "ʼn", "Ŋ", "ŋ", "Ō", "ō", "Ŏ", "ŏ", "Ő", "ő", "Ŕ", "ŕ", "Ŗ", "ŗ", "Ř", "ř", "Ś", "ś", "Ŝ", "ŝ", "Ş", "ş", "Š", "š", "Ţ", "ţ", "Ť", "ť", "Ũ", "ũ", "Ū", "ū", "Ŭ", "ŭ", "Ů", "ů", "Ű", "ű", "Ų", "ų", "Ŵ", "ŵ", "Ŷ", "ŷ", "Ÿ", "Ź", "ź", "Ż", "ż", "Ž", "ž", "Ơ", "ơ", "Ư", "ư", "Ǎ", "ǎ", "Ǐ", "ǐ", "Ǒ", "ǒ", "Ǔ", "ǔ", "Ǖ", "ǖ", "Ǘ", "ǘ", "Ǚ", "ǚ", "Ǜ", "ǜ", "Ǻ", "ǻ", "Ǿ", "ǿ" };
    string[] asciiCharacters = new string[] { "A", "A", "A", "A", "A", "A", "C", "E", "E", "E", "E", "I", "I", "I", "I", "N", "O", "O", "O", "O", "O", "U", "U", "U", "U", "Y", "a", "a", "a", "a", "a", "a", "c", "e", "e", "e", "e", "i", "i", "i", "i", "n", "o", "o", "o", "o", "o", "o", "u", "u", "u", "y", "y", "A", "a", "A", "a", "A", "a", "C", "c", "C", "c", "C", "c", "C", "c", "D", "c", "D", "d", "E", "e", "E", "e", "E", "e", "E", "e", "E", "e", "G", "g", "G", "g", "G", "g", "G", "g", "H", "h", "I", "i", "I", "i", "I", "i", "I", "i", "I", "i", "J", "j", "K", "k", "k", "L", "l", "L", "l", "L", "l", "L", "l", "L", "l", "N", "n", "N", "n", "N", "n", "n", "N", "n", "O", "o", "O", "o", "O", "o", "R", "r", "R", "r", "R", "r", "S", "s", "S", "s", "S", "s", "S", "s", "T", "t", "T", "t", "U", "u", "U", "u", "U", "u", "U", "u", "U", "u", "U", "u", "W", "w", "Y", "y", "Y", "Z", "z", "Z", "z", "Z", "z", "O", "o", "U", "u", "A", "a", "I", "i", "O", "o", "U", "u", "U", "u", "U", "u", "U", "u", "U", "u", "A", "a", "O", "o" };

    value = Regex.Replace(name.Trim(), @"[\s]", "_"); // Replace white with under character

    for (int currentChar = 0; currentChar  < nonAsciiCharacters.Length; currentChar ++)
    {
        value = value.Replace(nonAsciiCharacters[i], asciiCharacters[currentChar ]);
    }

    return Regex.Replace(value, @"[^0-9a-zA-Z_]+", string.Empty); // Remove white characters
}
私有字符串转换(字符串值)
{
非科学性的六方数字字符串(非科学性的)非科学性的六方数字字符(新字符串)新字符串(新字符串)新字符串(新字符串)无无科学性的六方数字数字字符串(新字符串)无无科学性的无科学性的六方数字字符(新字符串)新字符串(新字符串)无无无科学性的六方数字字符串(新字符串)无无无无无科学性的政府政府当局当局当局当局当局当局当局(今年今年今年今年今年今年今年今年今年)的新字符串(六六六方)无无无无无无无无无无无科学性的数字数字数字串(新字符串)无无无无无无无无无科学性的数字数字数字数字数字。。。无无无无无无科学性的数字数字串(新字符串(新字符串)无无无无无无无无无无政府政府政府政府政府政府政府政府政府政府政府政府字符串的数字数字数字数字数字数字数字数字。。。。。无无无无无无无无无无无无政府政府政府政府政府ù、ú、ú, "ý", "ÿ", "Ā", "ā", "Ă", "ă", "Ą", "ą", "Ć", "ć", "Ĉ", "ĉ", "Ċ", "ċ", "Č", "č", "Ď", "ď", "Đ", "đ", "Ē", "ē", "Ĕ", "ĕ", "Ė", "ė", "Ę", "ę", "Ě", "ě", "Ĝ", "ĝ", "Ğ", "ğ", "Ġ", "ġ", "Ģ", "ģ", "Ĥ", "ĥ", "Ĩ", "ĩ", "Ī", "ī", "Ĭ", "ĭ", "Į", "į", "İ", "ı", "Ĵ", "ĵ", "Ķ", "ķ", "ĸ", "Ĺ", "ĺ", "Ļ", "ļ", "Ľ", "ľ", "Ŀ", "ŀ", "Ł", "ł", "Ń", "ń", "Ņ", "ņ", "Ň", "ň", "ʼn", "Ŋ", "ŋ", "Ō", "ō", "Ŏ", "ŏ", "Ő", "ő", "Ŕ", "ŕ", "Ŗ", "ŗ", "Ř", "ř", "Ś", "ś", "Ŝ", "ŝ", "Ş", "ş", "Š", "š", "Ţ", "ţ", "Ť", "ť", "Ũ", "ũ", "Ū", "ū", "Ŭ", "ŭ", "Ů", "ů", "Ű", "ű", "Ų", "ų", "Ŵ", "ŵ", "Ŷ", "ŷ", "Ÿ", "Ź", "ź", "Ż", "ż", "Ž", "ž", "Ơ", "ơ", "Ư", "ư", "Ǎ", "ǎ", "Ǐ", "ǐ", "Ǒ", "ǒ", "Ǔ", "ǔ", "Ǖ", "ǖ", "Ǘ", "ǘ", "Ǚ", "ǚ", "Ǜ", "ǜ", "Ǻ", "ǻ", "Ǿ", "ǿ" };
字符串[]ascicharacters=新字符串[]{“A”、“A”、“A”、“A”、“A”、“A”、“C”、“E”、“E”、“E”、“E”、“E”、“I”、“I”、“I”、“I”、“I”、“N”、“O”、“O”、“O”、“O”、“O”、“O”、“O”、“O”、“O”、“O”、“O”、“O”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“A”、“A”、“A”、“A”、“A”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“E”、“I”、“I”、“I”、“I”、“I”、“,“c”,“c”,“c”,“c”,“c”,“D”,“c”,“D”,“D”,“E”,“E”,“E”,“E”,“E”,“E”,“E”,“E”,“G”,“G”,“G”,“G”,“G”,“G”,“G”,“G”,“G”,“G”,“H”,“H”,“I”,“I”,“I”,“I”,“I”,“I”,“J”,“K”,“K”,“L”,“L”,“L”,“L”,“L”,“N”,“N”,“N”,“N”,“N”,“N”,“N”,“N”,“N”,“O”,“O”,“O”,“O”,“O”,“O”,“O”,“O”,“O”,“R”“r”、“r”、“r”、“r”、“r”、“S”、“S”、“S”、“S”、“S”、“S”、“S”、“S”、“T”、“T”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“W”、“W”、“Y”、“Y”、“Z”、“Z”、“O”、“U”、“A”、“I”、“O”、“O”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“U”、“A”、“A”、“O”、“O”};
value=Regex.Replace(name.Trim(),@“[\s]”,“”);//将白色替换为下字符
对于(int currentChar=0;currentChar

也许有人会把它做得更好,并把它放在这篇文章上:-)

看看这些问题:以及。在这个问题中,用问号替换特殊字符的例子-这不是我想要的:-(还有这个问题的其他答案?否则就创建你自己的转换器?@Abbas:它们都没有达到我的预期。我写了我自己的方法,并将其作为一个答案添加到帖子中。