2016-09-16 24 views
0

Windows-1252の特殊文字を置き換える必要がある状況です。より多くの文字が後で追加される可能性があるので、このハードコーディングの代わりに一般的な方法が必要です。C#メソッドから '%xx'へのURLエンコード

private string URLEncode(string s) 
     { 
      s = s.Replace("ø", "%f8"); 
      s = s.Replace("Ø", "%f8"); 
      s = s.Replace("æ", "%e6"); 
      s = s.Replace("Æ", "%e6"); 
      s = s.Replace("å", "%e5"); 
      s = s.Replace("Å", "%e5"); 
      return s; 
     } 

これは可能ですか?この '%f8'形式は何か分かりませんが、動作します。

+0

このようなもの私は常にテーブル駆動型です。 1つのフィールドにすべてのOriginalCharsを置き、別のフィールドにReplacementCharsを入れて、テーブルをループするだけです。この方法で、後で他のペアを追加する必要がある場合は、コードに触れる必要はありません。 –

+0

それは計画Bです。しかし、UTF-8文字をこの '%xx'形式に変換する方法が必要ですか? – capcapdk

+0

次のコードを使用して文字列に変換し、winStr.SubString(0,1)を使用して個々の文字を取得することができます:byte [] input = {0xf8、0xe6、0xe5}; 文字列winStr = Encoding.GetEncoding(1256).GetString(入力); バイト[]出力= Encoding.GetEncoding(1256).GetBytes(winStr); – jdweng

答えて

2

これで問題は発生しました。私は、文字列の小文字は、より良いあなたの現在のマッピングに一致するようにしなければならなかった

var source = "tØst".ToLowerInvariant(); 
var encodedUrl = HttpUtility.UrlEncode(source, Encoding.GetEncoding(1252)); 

:あなたのケースにすることができた

UrlEncoding issue for string with ß character

: 私は、私は別のポストで適切な解決策を見つけたと思います。

+0

彼らは働きません。彼らは "tst"から "%c3%b8st"を生成します。これはwindows-1252ではなく、 "tøst"ではなく ""と同じように解釈されます。 – capcapdk

+0

あなたの質問にもっと一貫して答えるように修正しました: - ) –

関連する問題