iT邦幫忙

0

asp.net framework web api 編碼請教

  • 分享至 

  • xImage

Hi 各位:
想請教各位目前查看官網文件說明看到預設的response回傳編碼為UTF-8,
https://ithelp.ithome.com.tw/upload/images/20221105/20127159HuECyxIwK9.png

透過自己寫的專案去測試,就算預設宣告Content-Type:charset=big5,查看回傳的Response也是UTF-8(使用Fiddler),
https://ithelp.ithome.com.tw/upload/images/20221105/20127159CQzMU9i0dO.png
查看了其他解決方式再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?讓他們後續可以好處理。
https://ithelp.ithome.com.tw/upload/images/20221105/20127159y38LhFbUUA.png
很抱歉對於編碼部分真的只有一些理解,故想請教各位了 謝謝!

使用的套件名稱如下:
1.Teradata.Client.Provider
2.Dapper

froce iT邦大師 1 級 ‧ 2022-11-07 09:35:27 檢舉
直接吐UTF-8就好,通常api會接回來自己轉。
難字先去看UTF-8吐出來是不是正常的,不是的話再想辦法處理。通常都是造字之類的得另外處理,像是自己建字碼表之類的。

而且你也做不到其中一個欄位是big5字碼,其他是UTF-8。

都這年頭了,還有人堅持要用big5就讓他自己傷腦筋吧。
字體顯示最重要的是字型檔
如果雙方都有字型檔,轉碼應該不是大問題
不過圖中的問號怎麼像是轉碼過程中漏字了
如果這個問題能排除,使用 UTF-8 應該是可行的
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-02-04 17:24:11

有幾點疑慮:
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

我要發表回答

立即登入回答