Chinese/Japanse 使用 StreamWriter 归档

Chinese/Japanse to file with StreamWriter

相关问题:why '?' appears as output while Printing chinese text

我想从网络资源 (jira) 获取一些文本。 后来我使用 StreamWriter 将它们写回文件 问题是我从 Jira 获得的以下行(在读入内存后仍然正确(通过调试器验证):

Deutsch:
Dies ist ein einfacher beispieltext der nur zum spass eingegeben wurde
Japanisch:
これが唯一の楽しみのために入力されたテキストの簡単な例であります
Chinesisch (einfach):
这是文本的一个简单的例子只是为了好玩
Same in Traditional Chinese, Whosebug doesn't like this text^^

如果我将包含此文本的问题保存到文件中,则在文件中:

<description><p>Deutsch:<br/> Dies ist ein einfacher beispieltext der nur zum spass eingegeben wurde<br/> Japanisch:<br/> ã“れãŒå”¯ä¸€ã®æ¥½ã—ã¿ã®ãŸã‚ã«å…¥åŠ›ã•れãŸãƒ†ã‚­ã‚¹ãƒˆã®ç°¡å˜ãªä¾‹ã§ã‚りã¾ã™<br/> Chinesisch (einfach):<br/> 这是文本的一个简å•的例å­åªæ˜¯ä¸ºäº†å¥½çŽ©<br/> Chinesisch (Traditionell):<br/> 這是文本的一個簡單的例å­åªæ˜¯ç‚ºäº†å¥½çŽ©</p></description>

这就是我尝试将以上内容写入文件的方式:

    Dim parts = tempstring.Split(vbCrLf)
    My.Computer.FileSystem.CreateDirectory(ConsoleApplication1.Paths.TEMPDIRECTORY)
    Dim sw As New StreamWriter(OldFilePath, False)
    For Each st In parts
        st = st.Trim()
        'st = st.Replace(vbLf, "")
        'Some parts start with -, which has to be removed --> is the end of a comment in XML notation is better
        'to be retained, to prevent errors or enable analyses of the XML if needed
        If st.StartsWith("-") And Not st.StartsWith("-->") Then
            st = st.Substring(1)
        End If
        st = st.Trim
        sw.WriteLine(st)
    Next

虽然链接页面上的答案表明 UTF8 是默认编码,但这对我来说不是真的,因为默认编码是:

System.Text.SBCSCodePageEncoding

要解决此问题,只需更改所有 StreamWriters/Readers 以明确告诉他们编码样式即可解决问题,因为上面的代码只是代替:

Dim sw As New StreamWriter(OldFilePath, False)

正确的方法是:

Dim sw As New StreamWriter(OldFilePath, False, Encoding.UTF8)

这解决了 Chinese/Japanese 和其他一些语言和字符的奇怪格式问题。