1

ヒンディー語フォントをHTMLコードに変換しました。今私が欲しいのは、このHTMLコードをUnicodeエスケープに変換することです...

ヒンディー語:

श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह-...

対応するHTML:

श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह-...

次に、このHTMLコードを次のようなUnicodeエスケープに変換します。

\ u0936 \ u094D \ u0930 \ u0940 \ u0917 \ u0902 \ u0917 \ u093E \ u0928 \ u0917 \ u0930 \ u0964 \ u0939 \ u0928 \ u0941 \ u092E \ u093E \ u0928 \ u0917 \ u0922 \ u093C \ u092E \ u09 \ u0917 \ u092A \ u0930

このサイトのように。しかし、JavascriptではなくC#コードを介してこの変換が必要です...

4

4 に答える 4

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は内部でC#と同じUTF-16を使用するため、上記はBMPの外部でも正常に機能します。

ただし、श्रीगंगानगर。に対応するHTML हनुमानगढ़मार्गपरलालगढ़जाटानछावनीकेनजदीकशनिवारसुबहसड़कसेपन्द्रहされています。

<p>श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह&lt;/p>

そして、対応するjavascriptは次のとおりです。

"श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह"

または:

'श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह'

なぜそれらを使用しないのですか?

于 2012-08-27T10:20:42.703 に答える
0

あなたはできる

  • 正規表現を使用して各Unicode文字をキャプチャします&#([0-9]+);
  • キャプチャされた部分を整数に変換します
  • 文字列内の整数の16進表現を取ります
  • 最初に追加し、文字列を左から\uパディングして4文字の文字列にします0
于 2012-08-27T10:13:57.937 に答える
0
StringBuilder sb = new StringBuilder();
foreach(char c in hindi)
{
    sb.Append(@"\u").Append(((int)c).ToString("X4"));
}
return sb.ToString()
于 2012-08-27T10:25:13.543 に答える
0

生のテキストから直接複数の回答が得られたようです。これは、質問したとおりにHTMLエスケープからそれを行う方法です。

string input = "&#2358;&#2381;&#2352;&#2368;&#2327;&#2306;&#2327;..."

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")));
于 2012-08-27T10:39:56.650 に答える