Asp.net
無法翻譯字節FCFCFC從指定程式碼頁到 Unicode 的索引 35
我正在嘗試將這樣的對象發送到我的 REST API(使用 asp net core 建構)
{ "firstName":"tersü", "lastName":"asda" }這就是 SoapUI 中的標頭的外觀:
Accept-Encoding: gzip,deflate Content-Type: application/json:charset=UTF-16 Host: localhost:4004 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5)但是,my
actionContext.ModelState始終無效,因為它不能與變音符號一起使用。例外情況如下:無法翻譯字節
$$ FC $$從指定程式碼頁到 Unicode 的索引 35
如果有任何幫助,方法簽名如下所示:
[ValidateUserData] public async Task<IActionResult> Update(string userId, [FromBody] UpdateUserRequest updateRequest)基本上程式碼永遠不會結束
if (!actionContext.ModelState.IsValid) { actionContext.Result = new BadRequestObjectResult(actionContext.ModelState); }
[ValidateUserData]屬性裡面我在這裡想念什麼?
您正在發送編碼為 的字元串
utf-16,但告訴(在Content-Type標頭的字元集中)它是utf-8.
tersüin的字節為utf-8:74,65,72,73,C3,BC但是
tersü(inutf-16) 包含字節(注意FC那裡):74,0,65,0,72,0,73,0,FC,0(在這個小提琴中檢查它)
所以它只是無法理解它。
utf-8因此,要麼在發送之前將字元串轉換為客戶端,要麼將Content-Type字元集設置為utf-16.
雖然 Content-Type 是字元集 UTF-8,但接收到的字節碼 FC 表示擴展的 ASCII 字元 252,它表示變音符號“ü”。
在 UTF-8 編碼中,變音符號“ü”由兩個字節組成。因此,給定的編碼標頭和傳輸的數據之間存在不匹配。所以你必須檢查生成請求的程式碼。