Hi 各位:
想請教各位目前查看官網文件說明看到預設的response回傳編碼為UTF-8,
,
透過自己寫的專案去測試,就算預設宣告Content-Type:charset=big5,查看回傳的Response也是UTF-8(使用Fiddler),
查看了其他解決方式再Web.Config新增語法,也無法更改預設回傳的結果,
<!--新增測試編碼問題-->
<globalization culture="zh-TW" uiCulture="zh-TW" requestEncoding="BIG5" responseEncoding="BIG5" fileEncoding="BIG5" />
故對於編碼事項有一些疑慮,當我去連結資料庫時,如果此時我確定資料庫中文字編碼是big5,
透過Nuget套件來進行資料抓取後經由IHttpActionResult回傳結果能正常顯示中文,但是難字的部分就無法顯示出來,當今天我的API需要給別人使用時,有幾點疑慮:
1.我透過.NET預設回傳UFT-8對於他們使用上會有影響嗎?如果確定他們取得資料後要顯示於網頁上是要big5是應該由他們自己轉換?
2.今天難字在我的資料庫我可以查看到,但是透過Fiddler查看是顯示問號,
那當他們使用我API時我是不是應該去特別針對這個欄位去轉換成big5?讓他們後續可以好處理。
很抱歉對於編碼部分真的只有一些理解,故想請教各位了 謝謝!
使用的套件名稱如下:
1.Teradata.Client.Provider
2.Dapper
有幾點疑慮:
1.我透過.NET預設回傳UFT-8對於他們使用上會有影響嗎? 如果確定他們取得資料後要顯示於網頁上是要big5是應該由他們自己轉換?
你header中設置 "Content-Type"是啥
瀏覽器就客戶端顯示啥
所以照理說 你處理成UFT-8呈現給用戶,
用戶如果需要貼到 big5 編碼的系統,則轉換的責任應在用戶的客戶端完成。
在 ASP.NET Web API 的預設配置中,改big5請參考
public HttpResponseMessage Get()
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value");
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
response.Content.Headers.ContentType.CharSet = "big5";
return response;
}
2.今天難字在我的資料庫我可以查看到,但是透過Fiddler查看是顯示問號,
那當他們使用我API時我是不是應該去特別針對這個欄位去轉換成big5?讓他們後續可以好處理。
由於Unicode字集大於Big5,所以會有一些字對應不到。
如果該字的字碼在您的電腦上沒有對應的圖形,便會出現「?」或者看不到的情形。
治本的做法是全面升級 UFT-8
治標的做法是 約定好"造字"
你就要特別處理 吐給他 他BIG5造字的內碼(全世界只有他看的到)
也必須安裝他提供給你的BIG5造字檔才看得到含外字的資料。
參考
https://www.cc.ntu.edu.tw/chinese/epaper/0014/20100920_1405.htm