4

次のような特殊文字を変換する方法が必要です。

Helloæ

普通キャラに。したがって、この単語は になりHelloaeます。これまでのところHttpUtility.Decode、またはUTF8をwin1252に変換する方法を試しましたが、何も機能しませんでした. この仕事をする単純で一般的なものはありますか?

ありがとうございました。

編集

ここOCの投稿を使用して、これら2つの方法を実装しようとしました。メソッドは次のとおりです。

public static string ConvertUTF8ToWin1252(string _source)
{
    Encoding utf8 = new UTF8Encoding();
    Encoding win1252 = Encoding.GetEncoding(1252);

    byte[] input = _source.ToUTF8ByteArray();
    byte[] output = Encoding.Convert(utf8, win1252, input);

    return win1252.GetString(output);
}

// It should be noted that this method is expecting UTF-8 input only,
// so you probably should give it a more fitting name.
private static byte[] ToUTF8ByteArray(this string _str)
{
    Encoding encoding = new UTF8Encoding();
    return encoding.GetBytes(_str);
}

しかし、うまくいきませんでした。弦はそのままです。

4

2 に答える 2

13

参照: .NET 音訳ライブラリは存在しますか?

ユニコードSharpFork

使用法:

var result = "Helloæ".Unidecode();
Console.WriteLine(result) // Prints Helloae
于 2013-06-28T14:48:56.653 に答える
1

æに直接的なマッピングはなくae、完全に異なる Unicode コード ポイントです。これを行う必要がある場合は、おそらく問題のあるコード ポイントを目的の文字列にマップする関数を作成する必要があります。

コメントによると、これには2段階のアプローチが必要になる場合があります。

  1. 可能な重複へのリンクごとに分音記号と結合文字を削除します
  2. 結合されていない残りの文字を代替文字列にマップします
switch(badChar){
   case 'æ':
   return "ae";
   case 'ø':
   return "oe";
   // and so on
}
于 2013-06-28T14:30:27.923 に答える