【问题标题】:UTF-8 raw character? to normal stringUTF-8 原始字符?到普通字符串
【发布时间】:2013-02-17 10:39:41
【问题描述】:

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

例如,我想将 "\uc778\uc0b0\uc544\uc5f0\uc2dc\uba58\ud2b8, \uce58\uba74\uc5f4\uad6c\uc804\uc0c9\uc81c" 类型的字符串转换为可读文本。

我在 system.text.utf8encoding text.encoding.utf8.getstring() 上苦苦挣扎,但它不起作用...

我该如何解决这个问题?似乎解决方案很简单...... 如果可以的话,最好用VB.Net写代码

感谢您的建议!


感谢您的回复。

我想我的观点没有写清楚。

问题是我想转换 "\uc885\ud569\uc9c4\ub8cc\uc2e4 \uacac\ud559 / \uce58\uacfc\uc758\uc0ac\uc724\ub9ac \ud1a0\ub860" (unicode 'code', not '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????' 代码都匹配一个字符,例如 '가')

谢谢!

【问题讨论】:

  • 什么意思,它不起作用?代码有什么作用?你能告诉我们你的代码吗?
  • 我又写了我的问题。你能给我更多的帮助吗? @svick
  • 就像@scartag 说的,你不需要转换任何东西。 "\uc885\ud569" 已经是你想要的了。如果你不能把它写到控制台,那是控制台的问题,而不是字符串的问题。
  • @svick 我的意思是,我想要可读的文本。 '"\uc885\ud569"' 不能被人阅读,但 "가나" 可以。我想要一个将'"\uc885\ud569"'(这也是一个文本,但不可读)转换为'"가나"'的转换器。如果我仍然没有抓住重点,我很抱歉。

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


【解决方案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)

【讨论】:

  • 是的!这正是我想要的。谢谢!
【解决方案2】:

你不需要做任何事情来转换它。

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

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

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

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

【讨论】:

  • 谢谢,但我想将字符放入变量中。但安慰。命令不支持该功能。还有其他代码可以转换吗?谢谢! @svick
  • @klados 这很可能是因为您的控制台字体不支持这些字符。
猜你喜欢
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 2014-08-06
  • 2012-01-20
  • 1970-01-01
  • 2016-05-31
  • 2018-06-11
相关资源
最近更新 更多