为什么'?'打印中文文本时显示为输出

时间:2013-11-03 19:04:52

标签: vb.net file unicode

我一直在尝试将一些中文文本打印到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)

1 个答案:

答案 0 :(得分: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