我正在编写一个必须生成具有固定大小列的纯文本文件的应用程序。
我目前的代码是:
Dim MyFilePath As String = Path & FILE_PREFIX & FileNr & ".TXT"
IO.File.Delete(MyFilePath)
Dim FileStr As New IO.StreamWriter(MyFilePath, False, <ENCODER HERE>)
Do While r.Read
FileStr.WriteLine(r("TXTLine"))
Loop
FileStr.Close()
r.Close()
我的问题是我有一些特殊字符,如:“ñ”,“à”等,我找不到正确的编码。
我需要在文本文件中写入特殊字符,就像它们在datareader中一样。而且我不能添加额外的字符,因为列具有固定的长度......
我该怎么办?
答案 0 :(得分:2)
您如何检查您是否获得了正确的编码?
如果您只是在Notepad中打开文件,则Windows-1252可能是您想要的编码。
Encoding.GetEncoding("Windows-1252")
会给你那个。
请注意,我注意到您说某些列是固定长度的。您是否正在将数据写入文件以供其他工具导入?如果是这样,那么你应该检查一下其他工具需要什么样的编码,而不是在你用它来查看文件的其他任何工具(如记事本)中看起来漂亮的工具。
答案 1 :(得分:0)
等等,你说列必须是“固定长度”。这表明您正试图让另一个应用程序读取此文件 - 您是否确定第二个应用程序可以读取“特殊”(Unicode)个字符?
你确定其他应用程序不仅仅期望ASCII,并且只是有一个特定的code page,它使用完全不同的数字来处理这些特殊字符中的一些(用某种本地语言解释高位ASCII字符)?
答案 2 :(得分:0)
问题不在于您无法找到正确的编码,问题是您不知道您的SOURCE编码是什么。纯ASCII只有256个字符,如果您的源包含不在ASCII调色板中的重音字符,您将无法以ASCII编码编写它们。故事结束。
您需要做的是重新检查两个系统之间的通信。如果您需要具有unicode字符,那么源和目标都需要接受unicode,无论是在平面文件中还是在某些XML文档中。
您不能将方形钉(unicode重音字符)放入圆孔(ASCII文件)。