Катакана полуширины становится искаженной / не читаемой при выводе в виде файла CSV

#vb.net

#vb.net

Вопрос:

Я выводю файл CSV со значением японской катаканы полуширины в кодировке SJIS. Но при открытии файла текст становится искаженным или нечитаемым, а кодировка не стала SJIS (не очень хорошо), хотя я установил ее как SJIS перед сохранением файла. Но, когда я не преобразовал его в символ полуширины. Результат был в порядке.Хорошо

Это мой код для записи файла:

 For Each ikey As Integer In dicHDO.Keys
strLine = GetOutputData(dicHDO(ikey))   vbCrLf

'CSVファイル書込に使うEncoding
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(932)

'書き込むファイルを開く
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(strFileName, True, enc)
sw.Write(strLine)

'閉じる
If sw IsNot Nothing Then
    sw.Close()
End If

Next

Private Function GetOutputData(tmpHDO() As String) As String
Dim st As String = ""

Try
    For i = 0 To tmpHDO.Count - 1
        If st = "" Then
            st = tmpHDO(i)
        Else
            st = st   ","   tmpHDO(i)
        End If
    Next

    Return st

Catch ex As Exception
    Throw ex
End Try
End Function
  

Комментарии:

1. Отсутствует ссылка на imgae? Еще лучше, отредактируйте вопрос и добавьте его в код, генерирующий код вашего файла

2. @Hursey Привет, уже отредактировал мой пост. Извините, что я впервые публикую здесь. В любом случае, спасибо

3. Вы пробовали Encoding.UTF8 вместо этого? Таким образом, системе легче найти запасной шрифт для представления этих символов. Кстати, вы также должны показать, что GetOutputData() делает, поскольку это то, что генерирует выходную строку.

4. привет @Jimi, уже вставил функцию GetOutputData(). Извините, я уже пробовал кодирование. UTF8, но клиент хочет использовать кодировку типа SJIS.

5. Да, но с этим проблем нет. Я предложил использовать UTF8, потому что это кодировка по умолчанию при сохранении файлов в Windows. Проблема возникает, когда вы используете две разные кодировки для записи в один и тот же файл. Если выходной файл уже был сгенерирован обычными средствами, вы, вероятно, создали кодировку UTF8 (или. По умолчанию — локальная кодировка, в зависимости от метода, используемого для создания файла) закодированный файл. После этого вы можете использовать только эту кодировку для записи в этот файл. Если вы используете другую кодировку, вы получаете искаженный текст -> здесь вы добавляете текст в файл.