gpt4 book ai didi

c# - 在 C# 中将阿拉伯语单词转换为 Unicode 格式

转载 作者:行者123 更新时间:2023-11-30 15:52:39 25 4
gpt4 key购买 nike

我正在设计一个 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 而不管它在 word 中的位置。

示例:假设我们有以下单词:

“سمير”包括:

'س' 写成 'سـ' 因为它是单词的第一个字母。

'م' 写成 'ـمـ' 因为它在单词的中间。

'ي' 写成 'ـيـ' 因为它在单词的中间。

'б' 写成 'ـб' 因为它是单词的最后一个字母。

上面的代码返回了 { 'س', 'م' , 'ي' , 'б'} 的 unicode 是:

\u0633\u0645\u064A\u0631

而不是 { 'سـ' , 'ـمـ' , 'ـيـ' , 'ـر'}

\uFEB3\uFEE4\uFEF4\uFEAE

关于如何更新代码以获得正确的 Unicode 有什么想法吗?

有帮助 link

最佳答案

字符串只是一系列 Unicode 代码点;它不知道阿拉伯语的规则。你得到的正是你输入的数据;如果你想输出不同的数据,那就输入不同的数据!

试试这个:

Console.WriteLine("\u0633\u0645\u064A\u0631");
Console.WriteLine("\u0633\u0645\u064A\u0631".ToUnicodeString());
Console.WriteLine("\uFEB3\uFEE4\uFEF4\uFEAE");
Console.WriteLine("\uFEB3\uFEE4\uFEF4\uFEAE".ToUnicodeString());

正如预期的那样,输出是

سمير
\u0633\u0645\u064A\u0631
ﺳﻤﻴﺮ
\uFEB3\uFEE4\uFEF4\uFEAE

这两个 Unicode 代码点序列在浏览器中呈现相同,但它们是不同的序列。如果要写出第二个序列,那么就不要传入第一个序列。

关于c# - 在 C# 中将阿拉伯语单词转换为 Unicode 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54079600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com