F# 文言文中非拉丁字符的使用

F# 文言文中非拉丁字符的使用,f#,suave,F#,Suave,我想在中使用非拉丁符号,例如西里尔文,但得到的结果很奇怪 MCVE 结果 因此,问题是-如何解决它?对于纯文本响应,您需要设置矿山类型编码: 将内容类型标头设置为给定的mime类型。记住,它应该包括内容的编码。例如,指定一个mimeType值'application/json;强烈建议使用charset=utf-8(当然,用您自己的MIME类型替换“json”) 看起来UTF-8被解释为拉丁语-1。尝试向你的应用程序中添加=>setMimeType“text/html;charset=utf-

我想在中使用非拉丁符号,例如西里尔文,但得到的结果很奇怪

MCVE

结果


因此,问题是-如何解决它?

对于纯文本响应,您需要设置矿山类型编码:

将内容类型标头设置为给定的mime类型。记住,它应该包括内容的编码。例如,指定一个mimeType值'application/json;强烈建议使用charset=utf-8(当然,用您自己的MIME类型替换“json”)


看起来UTF-8被解释为拉丁语-1。尝试向你的应用程序中添加
=>setMimeType“text/html;charset=utf-8”
,看看这是否会使浏览器将你的utf-8视为实际的utf-8,而不是默认为不正确的拉丁语-1。

比我强:用+1表示快速和正确。:-)谢谢,这是我在发布Q之前的第一个想法,但是我将编码设置为
1251
,而不是
utf-8
,所以它也不起作用。默认情况下是否未设置utf-8编码?根据文档,Suave发送utf-8编码字节,但没有内容类型标题,浏览器解释拉丁语-1。可能是Suave这样做是因为在没有MimeType的情况下无法设置编码,并且该类型没有合理的默认值。顺便说一句,您不应该使用非Unicode单字节编码,如1251,除非您有特殊需要(与旧软件互操作)。始终默认为UTF-8(没有BOM),这样您的互操作问题就最少了。@CaringDev-我感觉像
text/html;charset=utf-8
可能是一个合理的默认值;任何使用
text/plain
的人可能只是在初始测试期间才这样做。也许我应该建议在温和的问题追踪器中。。。
open Suave
open Suave.Filters
open Suave.Operators
open Suave.Successful

let app =
    choose [
        GET >=>  OK "Привет, Мир!" 
    ]

startWebServer defaultConfig app