Nicht in der Lage zu übersetzen bytes [FC] bei index 35 aus der angegebenen Codepage in Unicode
Ich versuche so senden Sie ein Objekt wie dieses zu meinem REST-API(integriert mit asp-net-core)
{
"firstName":"tersü",
"lastName":"asda"
}
Und dies ist, wie die Header-Formular SoapUI Aussehen:
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)
Aber, meine actionContext.ModelState
ist immer ungültig, weil es nicht funktionieren kann mit die umlaute. Die Ausnahme ist folgende:
Nicht in der Lage zu übersetzen bytes [FC] bei index 35 aus der angegebenen code-Seite an
Unicode
Wenn es keine Hilfe, die Signatur der Methode wie folgt aussieht:
[ValidateUserData]
public async Task<IActionResult> Update(string userId, [FromBody] UpdateUserRequest updateRequest)
Grundsätzlich ist der code geht nie über
if (!actionContext.ModelState.IsValid)
{
actionContext.Result = new BadRequestObjectResult(actionContext.ModelState);
}
innerhalb der [ValidateUserData]
Attribut
Was vermisse ich hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie senden Ihren string kodiert
utf-16
, aber erzählen (in derContent-Type
header charset) ist esutf-8
.Bytes für
tersü
imutf-8
sind:Jedoch
tersü
(inutf-16
) enthält die bytes (beachten Sie dieFC
es):(Check it in diesem fiddle)
So einfach kann es nicht verstehen. Also entweder konvertieren Sie Ihre Zeichenfolge zu
utf-8
im client vor dem senden, oder setzen Sie dieContent-Type
charsetutf-16
.Obwohl der Content-Type charset UTF-8 die empfangenen byte-code-FC bezeichnet die erweiterte ASCII-Zeichen 252 steht für den umlaut "ü".
In einer UTF-8-Kodierung der umlaut "ü" besteht aus zwei bytes. Es gibt also eine Diskrepanz zwischen dem angegebenen encoding-header und Daten, die übertragen werden. So haben Sie zu prüfen, den code, der generiert die Anfrage.