我已将印地语字体转换为HTML代码。现在我想要的是将这个HTML代码转换为unicode转义...
印地文:
श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह-...
对应的HTML:
श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह-...
现在我想将此HTML代码转换为unicode转义符,例如:
\ u0934 \ u090D \ u0930 \ u0930 \ u0902 \ u0930 \ u093E \ u0928 \ u0917 \ u0930 \ u0964 \ u0939 \ u0928 \ u0911 \ u092E \ u093E \ u0928 \ u0917 \ u0922 \ u093C \ u092E \ u093E \ u0930 \ u094D \ u0917 \ u092A \ u0930
就像在this site中一样。但我希望通过C#代码进行转换,而不是Javascript ...
答案 0 :(得分:1)
StringBuilder sb = new StringBuilder(hindiString.Length * 6);
foreach(char c in hindiString)
sb.Append(@"\u").Append(((int)c).ToString("X4"));
return sb.ToString()
我假设您不需要担心BMP之外的任何事情。如果是这样,你想首先将UTF-16高和低代理合并在一起。
编辑:从最后一句开始,js在内部使用UTF-16与C#相同,所以上述内容在BMP之外也能正常工作。
但是,相应的HTML要श्रीगंगानगर。 हनुमानगढ़मार्गपरलालगढ़जाटानछावनीकेनजदीकशनिवारसुबहसड़कसेपन्द्रहis:
<p>श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह</p>
相应的javascript是:
"श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह"
或者:
'श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह'
为什么不直接使用它们?
答案 1 :(得分:0)
你可以
&#([0-9]+);
\u
并从左侧填充0
字符串以使其成为4个字符的字符串答案 2 :(得分:0)
StringBuilder sb = new StringBuilder();
foreach(char c in hindi)
{
sb.Append(@"\u").Append(((int)c).ToString("X4"));
}
return sb.ToString()
答案 3 :(得分:0)
我看到你直接从原始文本中得到了多个答案,这里有一种方法可以根据你的要求从你的HTML转义中做到这一点;
string input = "श्रीगंग..."
var output = Regex.Replace(input, @"&#([0-9]*);",
x => String.Format("\\u{0:X4}", int.Parse(x.Groups[1].Value)));
或者替代;
var output = String.Join("", WebUtility.HtmlDecode(input)
.Select(x => "\\u" + ((int)x).ToString("X4")));