質問

私は、クライアントがクロアチアとスロベニア語に翻訳していたたサイトに取り組んでいます。当社の既存のURLパターンに合わせて、私たちは、URLに多くの非ASCII charachtersを持つにつながるしたアプリケーションのレイアウトを模倣するURL再書き込みルールを生成しています。

žč

いくつかのリンクは、いくつかは、標準のHTMLリンクされている、のgetURLを使用してFlashから起動されます。いくつかはプログラムによるResponse.Redirectsとレスポンスに301ステータスコードと位置ヘッダーを付加することを介していくつかです。私はIE6、IE7とFirefox 3でテストしてるとinternitmtently、ブラウザは非ラテン文字のURLエンコード表示します。

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

私は、これはIISと、それはのResponse.RedirectとのaddHeader(「場所...

の処理方法に何かある推測しています

誰がURLエンコードではないにこれらの文字をIISを強制的または非発音区別符号文字でこれらを交換するために私の最善の策であるの方法を知っていますか?

おかげ

役に立ちましたか?

解決

あなたがを場合は、

本当にの自問してみてください彼らは非URLエンコードします。これらの文字のサポートがインストールされていないユーザーが来るときはどうなりますか?

...私は考えているが、私は、世界のコンピュータの大部分に使用できない私のサイトの大部分を作る危険にさらしたくありません

その代わり、に焦点を当て、の理由のあなたは、この機能を必要としています。それはURLが素敵に見えるようにすることですか?その場合は、Zの代わりに、通常のZを使用するとうまくやるだろう。あなたはユーザー入力用のURLを使用していますか?その場合は、出力をリンクし、それを解析する前に、すべてをURLエンコード、および入力を使用する前に、URLデコードします。しかし、URLの中のZと他のローカル文字を使用しないでください...

注意点として、スウェーデンで我々はå、äとöを持っていますが、誰もURLでそれらを使用しない - ブラウザがそれ以外のURLをサポートしませんので、我々は、AとOを使用します。これは、ユーザーを驚かせず、非常に少数のは、我々は、A中の環がURLに欠けているという理由だけで目指しているものの言葉を理解することはできません。テキストはまだ右、ページに正しく表示されますか? ;)

他のヒント

  

誰でもないURLエンコードにIISを強制する方法を知っています。

は、URLエンコードしなければなりません。 HTTPヘッダ内生「S」(\ XC5 \ XA1)を通過することは無効です。ブラウザはあなたのためには「%C5%のA1」までのエラーを修正するかもしれませんが、あなただけの最初の場所では「%C5%のA1」と書かれたと思います。

その結果はと何が違うのではないだろう場合

リンクで生「S」を含めるのような間違っていないと、ブラウザはIRI仕様ごととしてUTF-8とURLエンコードにそれをエンコードすることになっています。しかし、確認するために、これは実際にあなたがリンクを持つページがUTF-8エンコードを務めていることを確認する必要があります動作します。ここでも、手動でURLエンコードは、おそらく最も安全です。

私はあなたが働いていない例にリンクすることができ、UTF-8のURLで支障がなかったしました!

  

あなたはそれが有効なHTTPヘッダを備えて何?詳細リファレンスへのリンクを持っています。

正準、 RFC 2616 に。しかし、実際にはやや不親切です。重要な通路があります:

  

* TEXTの言葉は、文字から文字を含めることがRFC 2047の規則に従ってエンコードされた場合にのみ、ISO-8859-1以外の設定ます。

問題は、RFC 2047の規則に従って、唯一「原子は」2047「符号化されたワード」を収容することができるということです。 TEXTは、それはHTTPに含まれているほとんどの状況では、原子であることを工夫することはできません。とにかくRFC 2047を明示的にRFC 822ファミリー・フォーマットのために設計されており、HTTPがたくさん822フォーマットのように見えますが、それが現実に適合していないです。それは微妙だが、有意差を持つ独自の基本的な文法を持っています。 HTTPの仕様ではRFC 2047への参照は、1つの任意の一貫した方法でそれを解釈することができるかもしれない方法についての手掛かりを与えていないし、私の知る限り知っている誰のようにして作業することができ、間違います。

であり、

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

「S」与えているだろうということではありません

これらの文字は、URL内で有効にする必要があります。私は、大規模な旅行サイトでURLのSEOのものを行なったし、私はそれを学んだときです。あなたがASCIIに特殊記号を強制するときに注意しないなら、あなたは言葉の意味を変更することができます。多くの場合、発音区別符号のみがそのコンテキスト内に存在して何の訳がありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top