1

クライアントがクロアチア語とスロベニア語に翻訳したサイトに取り組んでいます。既存の URL パターンに合わせて、アプリケーションのレイアウトを模倣する URL 書き換えルールを生成しました。これにより、URL に多くの非 ASCII 文字が含まれることになりました。

例 š ž č

getURL を使用して Flash からトリガーされるリンクもあれば、標準の HTML リンクもあります。プログラムによる Response.Redirects もあれば、301 ステータス コードとロケーション ヘッダーを応答に追加するものもあります。IE6、IE7、および Firefox 3 でテストしていますが、ブラウザーは非ラテン文字の URL をエンコードして表示します。

š = %c5%a1
ž = %c5%be
č = %c4%8d

これはIISと関係があり、Response.RedirectとAddHeader("Location ...

これらの文字を URL エンコードしないように IIS に強制する方法を知っている人はいますか?

ありがとう

4

3 に答える 3

4

非 URL エンコードが本当に必要かどうかを自問してください。これらの文字をサポートしていないユーザーがインストールされた場合はどうなりますか? よくわかりませんが、サイトの大部分を世界のコンピューターの大部分で利用できなくする危険を冒したくありません...

代わりに、この機能が必要な理由に注目してください。URLを見栄え良くするためですか?その場合は、ž の代わりに通常の z を使用しても問題ありません。ユーザー入力に URL を使用しますか? その場合は、解析して出力をリンクする前にすべてを URL エンコードし、入力を使用する前に URL デコードします。ただし、url に ž やその他のローカル文字を使用しないでください...

補足として、スウェーデンでは å、ä、ö がありますが、誰もそれらを URL で使用することはありません。ブラウザが URL をサポートしないため、a、a、o を使用します。これはユーザーを驚かせるものではなく、URL に å のリングがないという理由だけで、私たちが目指している単語を理解できないユーザーはほとんどいません。テキストは引き続きページに正しく表示されますよね? ;)

于 2009-02-10T11:17:28.493 に答える
2

IISにURLエンコードを強制しない方法を知っている人はいますか

URL エンコードする必要があります。HTTP ヘッダーで生の 'š' (\xC5\xA1) を渡すことは無効です。ブラウザはエラーを '%C5%A1' まで修正するかもしれませんが、その場合、最初に '%C5%A1' と書いた場合と結果は変わりません。

リンクに未加工の 'š' を含めること自体は問題ありません。ブラウザは、IRI 仕様に従って UTF-8 にエンコードし、URL エンコードする必要があります。ただし、これが実際に機能することを確認するには、リンクを含むページが UTF-8 でエンコードされていることを確認する必要があります。繰り返しになりますが、手動の URL エンコードがおそらく最も安全です。

UTF-8 の URL で問題はありませんでした。動作しない例にリンクできますか?

有効な HTTP ヘッダーを構成する要素の詳細が記載されているリファレンスへのリンクはありますか?

標準的には、RFC 2616 . ただし、実際には、これはやや役に立ちません。重要な一節は次のとおりです。

*TEXT の単語には、RFC 2047 の規則に従ってエンコードされた場合にのみ、ISO-8859-1 以外の文字セットの文字が含まれる場合があります。

問題は、RFC 2047 の規則によると、'atoms' だけが 2047 'encoded-word' に対応できることです。TEXT は、ほとんどの場合、HTTP に含まれていますが、アトムであるとは考えられません。とにかく、RFC 2047 は明示的に RFC 822 ファミリ フォーマット用に設計されており、HTTP は 822 フォーマットによく似ていますが、実際には互換性がありません。微妙ではあるが重要な違いがある独自の基本的な文法があります。HTTP 仕様の RFC 2047 への参照は、一貫した方法でそれを解釈する方法についての手がかりを与えません。私が知っている限り、それは誤りです。

いずれにせよ、実際のブラウザは、HTTP 処理のどこでも RFC 2047 エンコーディングを解釈する方法を見つけようとしません。非 ASCII バイトは RFC 2616 で ISO-8859-1 に定義されていますが、実際にはブラウザは HTTP を処理する際にさまざまな場所で他の多くのエンコーディング (UTF-8 など、またはシステムのデフォルト エンコーディングが何であれ) を使用できます。ヘッダー。したがって、8859-1 文字セットに頼るのは安全ではありません! とにかく、それがあなたに「š」を与えたというわけではありません...

于 2009-02-10T13:18:11.840 に答える
0

これらの文字は URL で有効である必要があります。私は大手旅行サイトで URL SEO の仕事をしていて、そのときにそれを学びました。分音記号を ascii に強制すると、注意しないと単語の意味が変わってしまう可能性があります。分音符号はその文脈にのみ存在するため、多くの場合、翻訳はありません。

于 2009-02-10T11:17:27.433 に答える