1

UTF-8 でエンコードされた POST リクエストを処理しています。この POST リクエストは、あるフォルダーにファイルを作成する役割を果たします。しかし、ロシア語の文字のファイル名を見ると、ファイル名にガベージ値が表示されます (ファイルの内容は問題ありません)。ファイル名は英字OKです。私が見るスクリプトでは:

Set fsOBJ= Server.CreateObject("Scripting.FileSystemObject")
Set fsOBJ= fsObj.CreateTextFile(fsOBJ.BuildPath(Path, strFileName))

「strFileName」が私の問題だと思います。Windows は UTF-8 ファイル名を好まないようです。これを解決する方法についてのアイデア。

4

1 に答える 1

3

VBScript文字列は厳密に2バイトのUnicodeであり、文字列の保存または送信に使用されるエンコーディングは、VBScriptに存在する文字列の前にUnicodeに変換されます。

私の推測では、ファイル名が記載されたフォーム投稿があり、投稿はUTF-8としてエンコードされています。ただし、受信ページでは、ファイル名を含むフォームフィールドをデコードするときに、CodePageが65001(UTF-8コードページ)以外に設定されています。その結果、フォームから取得した文字列が破損しています。

ページに追加<%@ CODEPAGE=65001 %>し、ページの上部に含めResponse.CharSet = "UTF-8"て、UTF-8として保存します。

これで、ソースフォームがUTF-8でエンコードされたフォームデータをページに送信すると、フォームデータがデコードされて正しくUnicodeになります。

于 2012-07-25T12:21:43.140 に答える