簡體   English   中英

如何在C#中解碼utf字符串

[英]How to decode a utf string in c#

我一直在嘗試解碼以下字符串:

Crédit 

在c#中,使用以下代碼:

    Encoding iso = Encoding.GetEncoding("ISO-8859-1");
    Encoding utf8 = Encoding.UTF8;
    string msg = iso.GetString(utf8.GetBytes(@"Crédit"));

這產生了:

Crédit

我在網上看了http://jeppesn.dk/utf-8.html ,這是正確的utf 8,應該產生:

Crédit

有人可以指出我要去哪里了嗎?

謝謝

應該和Windows-1252相反,而不是ISO-8859-1。 根據上下文的不同,人們通常說Windows-1252時使用的是Latin-1或ISO-8859-1,但是當出現諸如字符時,實際上使用ISO-8859-1會失敗,因為它首先貼錯了標簽。 當將ISO-8859-1指定為編碼時,甚至瀏覽器也使用Windows-1252。

Encoding w1252 = Encoding.GetEncoding(1252);
Encoding utf8 = Encoding.UTF8;
string msg = utf8.GetString(w1252.GetBytes(@"Crédit"));

基本上,您正在嘗試做沒有意義的事情。 你幾乎從來沒有1應該是一個解釋編碼的輸出作為輸入到另一個編碼。 這就像在說:“假設我將此圖像另存為gif ...然后使用jpeg加載器加載該文件...它是什么樣的?”

懷疑如果您使用:

// Just an example: don't actually do this.
string msg = utf8.GetString(iso.GetBytes(@"Crédit"));

...它會做您想要的,但是您根本不應該這樣做

現在,您真正的投入是什么(以什么形式),您想達到什么目的?


1如果這樣做,通常是因為其他人已經做錯了事,或者某處存在配置問題。 如果您發現自己正在執行此操作,則應非常仔細地考慮是否應該真正執行此操作,或者您是否只是在解決應該以不同方式解決的其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM