我在使用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
答案 0 :(得分:0)
我不是F#,但我认为可能是控制台的区域设置。设置断点并使用字符串的调试器检查实际的字节值。
例如Überlegung以Ü开头,其中0xDC为ASCII Code,如果从调试器获得此值,则只需设置控制台区域设置。
尝试查看有关设置语言环境的so question,即使它适用于c ++也应该适合您的环境。
答案 1 :(得分:0)
好的,我发现了问题:在Excel中使用CSV会生成更多或更少的ASCII,但不会生成UTF。要使用的格式是“Unicode(文本)”,它生成真正的unicode,'\ t'作为分隔符而不是';'要么 ','。对我有用...因此我关闭了这个问题......感谢大家!