vb.net - 为什么 '?' 在打印中文文本时显示为输出

标签 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)

最佳答案

   PrintLine(FileNum,  PANEL_DETAILS_COL1)

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

您需要升级此代码,改用 StreamWriter 类。默认使用utf-8编码,汉字无问题,不依赖机器配置。

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

关于vb.net - 为什么 '?' 在打印中文文本时显示为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756802/

相关文章:

c++ - 将 MFC 的 CString 转换为 ASCII 和 UNICODE 的 int

ms-access - 如何告诉 TortoiseHg 将 UTF-16 文件显示为非二进制文件?

c# - 将数据库密码注入(inject)默认 EF 连接字符串的最佳位置是什么

asp.net - VB.NET中YouTube DirectUpload的BackgroundWorker?

vb.net - VB.net 如何在正斜杠或反斜杠处分割字符串?

c# - 文件被两个进程使用

c - 如何一次读取一行文件并将每一行传递给 C 中的结构体?

c - 如果文件中有一行数字,请删除该行[closed]

java - vb.net中任何类似于Notify()的函数(该方法用于java线程)

MySQL 无法对表情符号正确进行 GROUP BY