2016-04-29 2 views
1

Bezug zu Ausgabe in Datei: why '?' appears as output while Printing chinese textChinese/Japanse mit Stream

ich einige Texte aus einer WebSource (jira) erhalten möchten. Später schreibe ich sie wieder ein StreamWriter Das Problem ist, dass die folgende Zeile I von Jira Datei erhalten unter Verwendung von (und das ist noch richtig nach in den Speicher einzulesen (veryfied über Debugger):

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

Wenn ich spare den Problem, das diesen Text enthält diese Datei in der Datei:

<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> 

Dies ist, wie ich versuche, das oben zu schreiben in Datei:

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 

Antwort

2

Während die Antwort auf der verlinkten Seite schlägt vor, dass UTF8 Standardcodierung ist, dies für mich war nicht wahr, für die Standard-Kodierung war:

System.Text.SBCSCodePageEncoding 

dies einfach zu beheben alle StreamWriters/Leser zu ändern ausdrücklich sie die sagen, Codierung Stil das Problem, für den Code festgelegt darüber nur statt war:

Dim sw As New StreamWriter(OldFilePath, False) 

der richtige Weg war:

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

das in Ordnung bringen das Problem mit den seltsamen Formaten für Chinesisch/Japanisch und einige andere Sprachen und Zeichen.