在C#中将latin1转换为UTF8

3

可能是重复问题:
将Latin1编码的UTF8转换为Unicode

我想在C#中将latin1(ISO-8859-1)转换为UTF8。最好的方法是什么?

我的字符串是“Công ty TNHH TM và DL Việt Hương”。


谢谢,但它还没有解决! - hainv
2
这不是一个有效的ISO-8859-1字符串。在Latin-1中没有越南字符。这是Latin-1代码页;如果你在那里找不到你的字符,它就无法进行转换。 - Michael Petrotta
将一个完全没有意义的问题(“Latin 1 encoded UTF8”是什么鬼?!)作为重复问题关闭,对我来说似乎是错误的。虽然这个问题有缺陷,正如@MichaelPetrotta上面所指出的那样,但我投票重新打开它;它不可能是一个关于将“Latin 1 encoded UTF8”转换为Unicode的问题的重复,因为那是完全没有意义的 - Mark Amery
尽管原始闭包可能准确也可能不准确,但问题仍然不符合主题,因为它正在询问一个基本上基于观点的问题。即使您打算使用更好的方法重新关闭它,通常也不值得重新打开一个不相关的问题。投票以保持关闭状态。 - TylerH
1个回答

3

我的字符串是 "Công ty TNHH TM và DL Việt Hương",当使用 http://www.unicodetools.com/unicode/utf8-to-latin-converter.php 时结果是正确的,但使用 Encoding.UTF8.GetString(Encoding.GetEncoding("iso-8859-1").getBytes(s)) 是不正确的。 - hainv
网站从latin1转换为utf8的转换器必须使用一种算法,能够处理非latin1字符。因此,当输入非拉丁字符时,C#似乎不太容忍,而网站能够对无效字符进行猜测。问题是,网站使用的是哪种算法,以及它是用哪种语言编写的? - Eric Leschinski
是的,那个网站对于原帖中的字符串也做得不好。我并不指望它能够做到 - 没有源代码页的情况下,只能靠猜测。我肯定不会称其为“正确”。 - Michael Petrotta
该网站不需要进行任何转换,您的字符串一开始就是正确的,只需要对HTML进行反转义即可。由于该网站是基于HTML的,所以它们可以正确显示而无需进行任何转换。 - Esailija

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接