编码“ä”,“ö”,......无法正常工作

时间:2016-07-03 09:40:31

标签: f#-data

我在使用Excel生成的csv文件上使用CsvProvider。 csv文件包含一些未正确读取的特定德语字符('ä','ö',...)。

我尝试使用Encoding参数,使用带有UTF8编码的流,将Excel文件保存为MS-DOS格式的“.csv”,“。csv”,但是,结果始终相同。

这是一个简化的代码示例:

open FSharp.Data

type MyCsvProvider = CsvProvider<"Mappe1.csv",Separators=";">

[<EntryPoint>]
let main argv = 
    let csvDatas = MyCsvProvider.Load("..\..\Mappe1.csv")

    for i in csvDatas.Rows do
        printfn "Read: Beispiel='%s' and Änderungsjahr='%d" i.Beispiel i.``�nderungsjahr`` 

    0 

这里对应的CsvFile:

Beispiel;Änderungsjahr
Data1;2000
Überlegung;2010

这里是执行后的结果:

Read: Beispiel='Data1' and Änderungsjahr='2000
Read: Beispiel='?berlegung' and Änderungsjahr='2010

2 个答案:

答案 0 :(得分:0)

我不是F#,但我认为可能是控制台的区域设置。设置断点并使用字符串的调试器检查实际的字节值。

例如Überlegung以Ü开头,其中0xDC为ASCII Code,如果从调试器获得此值,则只需设置控制台区域设置。

尝试查看有关设置语言环境的so question,即使它适用于c ++也应该适合您的环境。

答案 1 :(得分:0)

好的,我发现了问题:在Excel中使用CSV会生成更多或更少的ASCII,但不会生成UTF。要使用的格式是“Unicode(文本)”,它生成真正的unicode,'\ t'作为分隔符而不是';'要么 ','。对我有用...因此我关闭了这个问题......感谢大家!