3
如果我有一串UTF-8字符,並且它們需要以UTF-7的形式輸出到舊系統,我有兩個問題與此有關。.NET中的智能UTF-8到UTF-7
如何將具有UTF-8字符的字符串s轉換爲沒有這些字符的相同字符串?
是否有任何簡單的將擴展字符(如'Ō')轉換爲最接近的非擴展等效'O'?
如果我有一串UTF-8字符,並且它們需要以UTF-7的形式輸出到舊系統,我有兩個問題與此有關。.NET中的智能UTF-8到UTF-7
如何將具有UTF-8字符的字符串s轉換爲沒有這些字符的相同字符串?
是否有任何簡單的將擴展字符(如'Ō')轉換爲最接近的非擴展等效'O'?
如果舊系統能夠正確處理UTF-7,爲什麼要刪除任何東西?只需將字符串編碼爲UTF-7:
string text = LoadFromWherever(Encoding.UTF8);
byte[] utf7 = Encoding.UTF7.GetBytes(text);
然後將UTF-7編碼文本發送到舊系統。
如果你有原來的UTF-8編碼的字節,可以在一個步驟做到這一點:
byte[] utf7 = Encoding.Convert(Encoding.UTF8, Encoding.UTF7, utf8);
如果實際上需要轉換爲ASCII碼,你可以做這很容易。
爲了除去非ASCII字符:
var encoding = Encoding.GetEncoding
("us-ascii", new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] ascii = encoding.GetBytes(text);
爲了非ASCII轉換爲最接近的等同物:
string normalized = text.Normalize(NormalizationForm.FormKD);
var encoding = Encoding.GetEncoding
("us-ascii", new EncoderReplacementFallback(""),
new DecoderReplacementFallback(""));
byte[] ascii = encoding.GetBytes(normalized);
.NET字符串是UTF-16。總是。 – Joey 2009-07-30 20:53:52