将字符串中的特殊字符转换为Unicode十六进制代码?

问题描述:

例如,我有字符串“Möller”。我想根据这个链接中的十六进制代码将它转换为“Möller”:http://www.codetable.net/hex/f6将字符串中的特殊字符转换为Unicode十六进制代码?

我想检测所有特殊字符(不是正常的字母数字)并自动转换它们。

到目前为止,我所看到的仅仅是正常的Hex。有没有办法获得Unicode十六进制代码?

谢谢

+0

'字符串编码= WebUtility.HtmlEncode( “默勒”);' - 为您提供了编码字符串。但是使用十进制,而不是十六进制字符。 –

+0

您之后的格式看起来像XML或HTML。如果是这样,为什么不让一个适当的作家做它需要做的事情,给定你指定的文档编码?你需要一些它不会的东西吗?无论如何,“ö”有什么问题?它的许多其他字母,符号......是完全可读的,这是一个[XY问题](http://meta.*.com/tags/xy-problem/info)? –

您想匹配任何Unicode字母,但匹配ASCII字母。这是很容易实现与正则表达式:

[\p{L}-[A-Za-z]] 

regex demo

在C#代码,使用Regex.Replace与匹配评估这些字母转换为十六进制代码。

var s = "Möller"; 
s = Regex.Replace(s, @"[\p{L}-[a-zA-Z]]", m => 
    string.Join(string.Empty, m.Value.Select(c=>string.Format("&#x{0:X};", Convert.ToInt32(c))).ToArray())); 
Console.WriteLine(s); // => Möller 

C# demo