我正在设计一个API,该API用户需要以Unicode格式返回阿拉伯文本。为此,我尝试了以下方法:
public static class StringExtensions
{
public static string ToUnicodeString(this string str)
{
StringBuilder sb = new StringBuilder();
foreach (var c in str)
{
sb.Append("\\u" + ((int)c).ToString("X4"));
}
return sb.ToString();
}
}
上述代码的问题在于,它返回字母的Unicode,而不考虑其在单词中的位置。
例如:假设我们有以下单词:
"سمير",由以下组成:
'س'写作'سـ',因为它是单词的第一个字母。
'م'写作'ـمـ',因为它在单词中间。
'ي'写作'ـيـ',因为它在单词中间。
'ر'写作'ـر',因为它是单词的最后一个字母。
上述代码返回{ 'س','م','ي','ر'}的Unicode,即:
"\u0633\u0645\u064A\u0631"
而不是{ 'سـ','ـمـ','ـيـ','ـر'},即:
"\uFEB3\uFEE4\uFEF4\uFEAE"
有什么想法可以更新代码以获取正确的Unicode吗?
有用的 链接