2013-11-03 105 views
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) 
+2

你可能想看看[是什么时,我的文字显示为问号意思?(http://stackoverflow.com/q/217237/2145211) – Harrison

+0

感谢您的链接。我知道这是因为一些字符编码我得到这个。 可以请你给一些解决方案以上。我是编程新手。 – Kenta

回答

4
PrintLine(FileNum, PANEL_DETAILS_COL1) 

的FileOpen和打印行是上次在VB6中使用古VB子程序。它们只包含在VB.NET中以帮助移植旧代码。他们使用Encoding.Default编码文本,这将产生?世界上大多数机器都有问号。

您需要升级此代码,改为使用StreamWriter类。它默认使用utf-8编码,这种编码对中文字符没有任何影响,并且不依赖于机器配置。

Using sw = new StreamWriter(cmnSaveSave.FileName) 
    sw.WriteLine(PANEL_DETAILS_COL1) 
End Using 
+0

可以请你告诉我与printline(..)相同。在我的项目中有很多用printline()编写的代码。因此,如果我必须按照您的解决方案去做,我必须做出很多更改。预先感谢.. – Kenta

+0

有很多代码可以使用ASCII编码或使用机器默认代码页中的字符来编写文本。看看你的公寓或办公室的窗户,你看到用中文写的任何标志吗?印度机器配置为使用中文代码页的几率非常接近于零。在中文机器上运行你的代码,你会有更好的可读性。这种基于机器位置的随机结果是摆脱遗留代码并使用StreamWriter的一个很好的理由。 –

+0

将文件保存为.csv而不是.xls。现在它可以工作。 – Kenta

相关问题