我想在Suave中使用非拉丁符号,例如西里尔字母,但得到奇怪的结果
MCVE
open Suave
open Suave.Filters
open Suave.Operators
open Suave.Successful
let app =
choose [
GET >=> OK "Привет, Мир!"
]
startWebServer defaultConfig app
结果
所以,问题是 - 如何解决它?
对于纯文本响应,您需要设置地雷类型编码:>=> setMimeType "text/plain; charset=utf-8"
将 Content-Type 标头设置为给定的 mime 类型。请记住,它应该包括您的内容的编码。例如,指定一个 mimeType 值为 'application/json; 强烈推荐 charset=utf-8' (当然,用你自己的 MIME 类型替换 'json' ;))
看起来 UTF-8 被解释为 Latin-1。尝试添加>=> setMimeType "text/html; charset=utf-8"
到您的应用程序,看看这是否会使浏览器将您的 UTF-8 视为实际的 UTF-8,而不是默认为不正确的 Latin-1。