KRT*_*Tac 2 .net c# asp.net dotnetnuke
我想自动转换 UTF-8 字符â Ù á ? ?,a U a C G以便它们在 URL 中是可以接受的。
到目前为止,我有这个:
Encoding sourceEncoding = Encoding.GetEncoding(28591); // ISO-8859-1
byte[] asciiBytes = Encoding.Convert(sourceEncoding, Encoding.ASCII, sourceEncoding.GetBytes(<source text>));
String asciiString = Encoding.UTF8.GetString(asciiBytes);
Run Code Online (Sandbox Code Playgroud)
这种方法有两个问题:
有什么想法可以让我完成这项工作吗?
您可以最好使用normalization去除变音符号(通常称为重音符号,您知道:波浪号、cédille、元音变音和朋友)。
以下方法应替换 99% 的所有变音符号。然而,最后一个百分比仍将显示为 ?。如果您不想看到 ? 字符,使用此方法后用空字符串替换它们。
public static string RemoveDiacritics(string value)
{
if (String.IsNullOrEmpty(value))
return value;
string normalized = value.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
foreach (char c in normalized)
{
if (System.Globalization.CharUnicodeInfo.GetUnicodeCategory(c) != System.Globalization.UnicodeCategory.NonSpacingMark)
sb.Append(c);
}
Encoding nonunicode = Encoding.GetEncoding(850);
Encoding unicode = Encoding.Unicode;
byte[] nonunicodeBytes = Encoding.Convert(unicode, nonunicode, unicode.GetBytes(sb.ToString()));
char[] nonunicodeChars = new char[nonunicode.GetCharCount(nonunicodeBytes, 0, nonunicodeBytes.Length)];
nonunicode.GetChars(nonunicodeBytes, 0, nonunicodeBytes.Length, nonunicodeChars, 0);
return new string(nonunicodeChars);
}
Run Code Online (Sandbox Code Playgroud)
希望有帮助!
| 归档时间: |
|
| 查看次数: |
6680 次 |
| 最近记录: |