wget中国語文字化けしソリューション


wgetでWebページをダウンロードする場合、ファイル名に非ASCII文字やその他の特殊文字が含まれていると、いわゆる文字化けしてしまいます.中国語の文字化けしの問題を解決するには、wgetのソースコードを修正することができます.URL文字列を符号化ソースファイルはurlである.c.ただしurl_file_name()の機能は、URLに基づいてどのファイル名でファイルを保存すべきかを判断する機能です.この関数はappend_を呼び出しますuri_pathel()は、FILEを呼び出します.CHAR_TEST()マクロは、URL中の文字が特殊文字であるか否か(すなわち、URL符号化が必要な文字である.もちろん、中国語も含む)を判断するために用いられる.問題はこのマクロにある.中国語のエスケープを行わないためには、中国語文字を通常文字として扱う必要がある.以下に示すFILE_CHAR_TEST()マクロ:
#define FILE_CHAR_TEST(c, mask) \
    ((opt.restrict_files_nonascii && !c_isascii ((unsigned char)(c))) || \
    (filechr_table[(unsigned char)(c)] & (mask)))

次のように変更します.
#define FILE_CHAR_TEST(c, mask) \
(((opt.restrict_files_nonascii && !c_isascii ((unsigned char)(c))) || \
(filechr_table[(unsigned char)(c)] & (mask))) \
&& !((c|0x0fffffff) == 0xffffffff)) /*      */

原文住所:http://www.linux-ren.org/modules/newbb/viewtopic.php?topic_id=53634