【问题标题】:Characters not displayed correctly when reading CSV file读取 CSV 文件时字符显示不正确
【发布时间】:2020-08-01 02:52:29
【问题描述】:

我在尝试从 .CSV 文件中读取字符串时遇到问题。当我执行应用程序并且文本显示在文本框中时,某些字符(例如“é”或“ó”)显示为问号符号。 想法是这段代码读取整个 CSV 文件,然后根据行的第一个单词将每一行拆分为变量。

我用来阅读的代码是:

Dim test() As String
test = IO.File.ReadAllLines("Libro1.csv")
Dim test_chart As String = Array.Find(vls1load, Function(x) (x.StartsWith("sample")))
Dim test_chart_div() As String = test_chart.Split(";")
variable1 = test_chart_div(1)
variable2 = test_chart_div(2)
...etc

我也尝试过:

Dim test() As String
test = IO.File.ReadAllLines("Libro1.csv", System.Text.Encoding.UTF8)

但它们都不起作用。 .csv 文件应该是 UTF8。在 excel 中保存文件时可以看到的“网络选项”显示编码 UTF8。我还尝试了将文件扩展名更改为HTML并用浏览器打开它的技巧,看看编码也是正确的。

有人可以建议我可以尝试的其他任何事情吗? 提前致谢。

【问题讨论】:

  • 请不要在标题中包含标签。这就是标签的用途。
  • 您在使用 UTF8 时是否遇到解析错误?
  • @Danny_ds,不,我没有得到任何两个代码的解析错误。

标签: vb.net csv character-encoding


【解决方案1】:

当使用CSV Comma Separated输出格式导出Excel文件时,在Excel的@987654325的工具->网页选项->编码中选择的编码@ 对话框实际上并没有产生预期的结果:
文本文件是使用相对于 Excel 应用程序中选择的当前语言的编码保存的,而不是选择的 Unicode (UTF16-LE) 或 UTF-8 编码(被忽略),也不是由当前系统语言确定的默认编码。

要导入CSV文件,可以使用Encoding.GetEncoding()方法指定生成文件的机器中使用的编码的名称或CodePage:同样,不是与系统语言相关的编码,而是Excel 应用程序当前使用的语言的编码。

CodePage 1252 (Windows-1252) 和ISO-8859-1 常用于Latin1 区域。
根据您所指的符号,这很可能是使用的原始编码。
在 Windows 中,使用前者。 ISO-8859-1 仍在使用,主要用于 网页(或在不关心所使用的编码的情况下创建的网页)。

请注意,CodePage 1252ISO-8859-1 的编码并不完全相同,存在细微的差异。 如果您发现说明相反的文档,则说明文档是错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多