C# 如何在C中将HTML转换为Javascript转义#

C# 如何在C中将HTML转换为Javascript转义#,c#,html,unicode,C#,Html,Unicode,我已将印地语字体转换为HTML代码。现在我想把这个HTML代码转换成unicode转义码 印地语: श्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह-... 对应的HTML: 和#2358्रीगंगानगर। हन

我已将印地语字体转换为HTML代码。现在我想把这个HTML代码转换成unicode转义码

印地语:

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

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

现在我想将此HTML代码转换为unicode转义,如:

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

就像在美国一样。但是我希望通过C代码,而不是Javascript进行转换…

您可以

  • 使用正则表达式
    &#([0-9]+)捕获每个unicode字符
  • 将捕获的部分转换为整数
  • 取字符串中整数的十六进制表示形式
  • 在开头添加
    \u
    ,并从左起用
    0
    填充字符串,使其成为4个字符的字符串
    • 你可以

      • 使用正则表达式
        &#([0-9]+)捕获每个unicode字符
      • 将捕获的部分转换为整数
      • 取字符串中整数的十六进制表示形式
      • 在开头添加
        \u
        ,并从左起用
        0
        填充字符串,使其成为4个字符的字符串
      我假设你不需要担心BMP之外的任何事情。如果是这样,您希望首先将UTF-16高和低代理合并在一起。 编辑:划掉最后一句话,js在内部使用UTF-16,与C#相同,因此上述内容在BMP之外也可以正常工作

      但是,相应的HTMLश्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह 是:

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

      为什么不直接使用它们呢

      StringBuilder sb = new StringBuilder();
      foreach(char c in hindi)
      {
          sb.Append(@"\u").Append(((int)c).ToString("X4"));
      }
      return sb.ToString()
      
      我假设你不需要担心BMP之外的任何事情。如果是这样,您希望首先将UTF-16高和低代理合并在一起。 编辑:划掉最后一句话,js在内部使用UTF-16,与C#相同,因此上述内容在BMP之外也可以正常工作

      但是,相应的HTMLश्रीगंगानगर। हनुमानगढ़ मार्ग पर लालगढ़ जाटान छावनी के नजदीक शनिवार सुबह सड़क से पन्द्रह 是:

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


      为什么不直接使用它们呢?

      我看到您直接从原始文本中获得了多个答案,下面是一种按照您的要求从HTML转义中获得答案的方法

      StringBuilder sb = new StringBuilder();
      foreach(char c in hindi)
      {
          sb.Append(@"\u").Append(((int)c).ToString("X4"));
      }
      return sb.ToString()
      
      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")));
      

      我看到您直接从原始文本中获得了多个答案,下面是一种按照您的要求从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")));
      

      这是一个简单的十进制到十六进制转换和字符串操作。谢谢,我会搜索它我不知道如何做,让我们看看它是否帮助我…这是一个简单的十进制到十六进制转换和字符串操作。谢谢,我会搜索它,我不知道如何做,让我们看看它是否帮助我…我没有尝试,直到现在,因为我找到了答案,但我也会尝试一下,因为它看起来与这个解释很好。。。对于快速回复,我直到现在才尝试,因为我找到了答案,但我也会尝试,因为它看起来与这个解释很好。。。n thnks用于快速回复。我刚刚添加了一个优化,如果字符串很大,它将产生不同的效果,你仍然需要逃避它,而不是像我建议的那样直接使用它。哦,等等。你的出发点是
      Ӓ格式?对不起,我看错了。首先做html代码。事实上,我测试了它,但它没有很好的工作,它给了我unicode转义,但它不是确切的可能的术语,我在我的问题中提到,我有html代码,但仍然感谢你的答复和gr8的答案。。。虽然我已经从@Joachim Isaksson的回答中得到了我想要的东西,但这就是我最后的评论所说的。我刚刚添加了一个优化,如果字符串很大,它将产生不同的效果,你仍然需要逃避它,而不是像我建议的那样直接使用它。哦,等等。你的出发点是
      Ӓ格式?对不起,我看错了。首先做html代码。事实上,我测试了它,但它没有很好的工作,它给了我unicode转义,但它不是确切的可能的术语,我在我的问题中提到,我有html代码,但仍然感谢你的答复和gr8的答案。。。虽然我已经从@Joachim Isaksson的回答中得到了我想要的,但这就是我最后的评论。嗨,非常感谢,这个答案是最好的,也是我想要的。。。非常感谢你我非常感谢你这个答案是最好的,而且这正是我想要的。。。多谢各位