UTF-8原始字符?正常的字符串

时间:2013-02-17 10:39:42

标签: .net vb.net encoding utf-8

我想将utf-8(或unicode)文本解码为普通字符串。

例如,我想转换" \ uc778 \ uc0b0 \ uc544 \ uc5f0 \ uc2dc \ uba58 \ ud2b8,\ uce58 \ uba74 \ uc5f4 \ uad6c \ uc804 \ uc0c9 \ uc81c"一种字符串到可读文本。

我在使用system.text.utf8编码text.encoding.utf8.getstring()时遇到了困难,但它无法正常工作......

我该如何解决这个问题?似乎解决方案很简单...... 如果可能的话,如果你在VB.Net中编写代码就会很棒。

感谢您的建议!


感谢您的回复。

我认为我没有清楚地写下我的观点。

问题是我想要转换" \ uc885 \ uc550 \ uc9c4 \ ub8cc \ uc2e4 \ uacac \ ud559 \ \ uce58 \ uacfc \ uc758 \ uc0ac \ uc724 \ ub9ac \ ud1a0 \ ub860" (unicode'代码',而不是' chracter')到一个可读的字符串,例如"가나다라"。或中文或其他。

并且,我需要.NET代码才能做到这一点。

尝试了

theString = Convert.toString("\uc885\ud569");

尝试了

Dim utf8Encoding As New System.Text.UTF8Encoding
Dim encodedString() As Byte
encodedString = utf8Encoding.GetBytes(encodedString) .....

还有一些,但没有任何转换" \ uc885 \ ud569"到"가나"。 (这就是一个例子。我知道每个' \ u ????'代码匹配一个字符,对于ex'가')

谢谢!

2 个答案:

答案 0 :(得分:1)

您无需做任何事情来转换它。

文字是中文字符(或类似的亚洲字符)

我猜是输出它。为我工作。

我只是从linqpad做了Console.WriteLine()

每个\ uXXXX都是特定字符的unicode值。

答案 1 :(得分:1)

我想我终于明白了问题所在。类似"\uc778\uc0b0"的字符串与C#中的"인산" 完全相同(并且它是UTF-16,而不是UTF-8)。但VB.NET不理解这种转义序列。

我认为这里最好的选择是直接编写Koren字符,类似"인산"的是有效的VB.NET代码。

如果你真的需要使用类似C#的转义序列,you can use Regex.Unescape()

Dim escaped = "\uc778\uc0b0\uc544\uc5f0\uc2dc\uba58\ud2b8, \uce58\uba74\uc5f4\uad6c\uc804\uc0c9\uc81c"
Dim unescaped = Regex.Unescape(escaped)