【发布时间】:2021-01-15 14:11:50
【问题描述】:
我正在使用 FSharp.Data 下载和解析 XML 文档。该文件包含几个北欧字符,例如:“Lempäälän Keskus”。我有一个像这样的简单代码:
open FSharp.Data
open System.IO
let xml = Http.RequestString(downloadUrl)
File.WriteAllText("response.xml", xml)
但是,当我打开生成的文件时,字符已损坏,我看到:“Lempäälän Keskus”。我尝试使用 ISO-8859-1 编码手动重新保存文件,然后使用 UTF-8(在 VS Code 中)重新打开。这修复了显示的文本。然后尝试实现一个简单的编码转换函数:
open FSharp.Data
open System
open System.IO
let convertEncoding (input: string) =
let iso = Encoding.GetEncoding("ISO-8859-1")
let utf8 = Encoding.UTF8
let isoBytes = iso.GetBytes(input)
let utfBytes = Encoding.Convert(iso, utf8, isoBytes)
utf8.GetString(utfBytes)
let xml = Http.RequestString(downloadUrl)
let decoded = convertEncoding xml
File.WriteAllText("response.xml", decoded)
但是,当我打开文件时,我仍然看到“Lempäälän Keskus”而不是“Lempäälän Keskus”。我做错了什么?
【问题讨论】: