0

URL を読んでいると、パーセントでエンコードされた文字が含まれていることがよくあります。

例: %C3%A9 は実際には é です。

http://www.microsystools.com/products/sitemap-generator/faq/character-percentage-url-encoding/によると、8 ビット ASCII (128-255) の上半分の文字は UTF-8 としてエンコードされます。の場合、それらのバイトは 16 進数として保存されます。ここで、URL を取得すると、%HEX が 8 ビット ascii として再エンコードされているため、それらを実際の 8 ビット ascii に変換する必要があります。使用できる関数/ライブラリはありますか、そうでなければ、どのように変換しますか?

C/C++ を使用しています。

4

1 に答える 1

1

まず、URLDecode が必要です。クロスプラットフォーム C++ で使用できる関数ではありませんが、幸いなことに、難しい問題ではありません。ソースからターゲットにバイトをコピーします。% 以外のバイトは単にコピーされます。%xx をヒットしたら、XX を 16 進数から 2 進数に変換すると、バイトが得られます。

これにより、UTF-8 のテキストのバッファーが得られます。あなたは「ASCII」が欲しいと言います -- ISO-646。次に、アクセント付きの e を使用することはできません。あなたが本当に欲しいもののいくつかの可能性を考えることができます:

  1. ISO-8859-1。ICU を使用して、UTF-8 を ISO-8859-1 に変換できます。
  2. ISO-646。ICU を使用することもできます。これにより、アクセント付きの文字が ISO-646 に相当するものになると思います。
于 2009-11-22T21:06:29.697 に答える