2017-06-15 41 views
2

使用非拉丁字符我想在Suave使用非拉丁字符,例如,西里爾文,但得到怪異的結果在倜儻

MCVE

open Suave 
open Suave.Filters 
open Suave.Operators 
open Suave.Successful 

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

startWebServer defaultConfig app 

結果

enter image description here

所以,Q是 - 如何解決它?您需要設置防雷類別編碼

回答

8

對於文本只回應:>=> setMimeType "text/plain; charset=utf-8"

設置Content-Type頭給定的MIME類型。請記住它應該包含您的內容的編碼。例如,指定一個mimeType值'application/json;強烈推薦使用charset = utf-8'(但是用你自己的MIME類型替換'json',當然;))

+3

擊敗我:擁有+1快速*和*正確。 :-) – rmunn

+0

謝謝你,這是我在發佈Q之前的第一個想法,但是我把編碼設置爲'1251'而不是'utf-8',所以它不能工作。 utf-8編碼是不是默認設置的? –

+0

@FoggyFinder - 您構成的代碼使用UTF-8編碼的「Привет,Мир!」',所以這就是您應該說的Content-Type。你爲什麼使用1251? – rmunn

4

看起來像UTF-8被解釋爲Latin-1。嘗試將>=> setMimeType "text/html; charset=utf-8"添加到您的應用中,並查看是否讓瀏覽器將您的UTF-8視爲實際的UTF-8,而不是默認爲不正確的Latin-1。