3

我一直在尝试将一些中文文本打印到 excel 文件中。当我输入一些通用英文文本时,它的打印正确。但是当我尝试输入一些中文文本时,它会打印“?” 在文件中。

请让我知道下面的代码有什么问题

Public WithEvents cmnSaveSave As System.Windows.Forms.SaveFileDialog
Dim PANEL_DETAILS_COL1 As String = "完成的信息"
Dim FileNum as Integer

cmnSaveSave.Filter = I18N(CStr(63), "Excel Documents(*.Xls)|*.Xls")
Dim myDlgResult As System.Windows.Forms.DialogResult  
        myDlgResult = cmnSaveSave.ShowDialog()  '

cmnSaveSave.FileName = "c:\"
FileOpen(FileNum, cmnSaveSave.FileName, OpenMode.Output)
FileNum = FreeFile()

PrintLine(FileNum,  PANEL_DETAILS_COL1)
4

1 回答 1

4
   PrintLine(FileNum,  PANEL_DETAILS_COL1)

FileOpen 和 PrintLine 是最后在 VB6 中使用的古老 VB 子例程。它们仅包含在 VB.NET 中以帮助移植旧代码。他们使用 Encoding.Default 对文本进行编码,这会产生 ? 世界上大多数机器上的问号。

您需要升级此代码,改用 StreamWriter 类。它默认使用utf-8编码,一种对汉字没有问题的编码,不依赖于机器配置。

Using sw = new StreamWriter(cmnSaveSave.FileName)
    sw.WriteLine(PANEL_DETAILS_COL1)
End Using
于 2013-11-03T19:20:31.867 回答