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 和其他一些语言和字符的奇怪格式问题。
相关问题: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 和其他一些语言和字符的奇怪格式问题。