2022年7月14日 星期四

【C#】.NET Core MVC的ViewBag/ViewData中文編碼問題

 隨著客戶的專案開始也引入.NET Core,也就遇到越來越多的靈異事件,在原本.NET Framework跑得好好的程式碼,幾乎都要經過適度的微調。



中文編碼問題就很離奇,直接下$(obj).html('未填寫 <<@ParamsAttrNM[0]>>')填值到span裡,是正常顯示,但是,若改用呼叫function的方式來顯示錯誤訊息,@ParamsAttrNM[0]裡的中文就會變成如下的亂碼。

&#x4FEE;&#x6539;&#x89D2;&#x8272;&#x6210;&#x529F;&#xFF01;

原因是中文被編碼過了。

解決很簡單,只要在Startup.cs的ConfigureServices裡,加上下面這行即可。

//解决ViewBag的中文編碼問題
services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All));

若不能識別,添加以下命名空間即可。

using System.Text.Encodings.Web;
using System.Text.Unicode;



沒有留言:

張貼留言