1

まず、私の悪い英語について申し訳ありません。

コードイグナイターを使用しています。UTF 8 で動的アドレスを作成すると、奇妙な文字が表示されます。

URL は次のようになります: domian.com/article/שלום#.T9H1U9WRGSo

これの代わりに: domain.com/article/שלום

リンクは大丈夫に見えます:

<a href="http://www.domain.com/article/שלום">Text</a>

しかし、リンクをクリックすると、ここにリダイレクトされます (IE を除くすべてのブラウザーで):

domain.com/article/שלום#.T9H1U9WRGSo

皆さん、ありがとうございました :)

4

2 に答える 2

1

OK、つまり、URLにASCII以外の文字を含めることはできません。

文字は翻訳またはエンコードする必要があります。

  1. テキストヘルパーのドキュメントで説明されているconvert_accented_characters()とforeign_chars.phpを見てください。また
  2. codeigniterのurlencode()を見てください。これは、ASCII以外の文字を適切な%コードにエンコードします。

興味深いことに、 http://en.wiktionary.org/wiki/%D7%A9のようなサイトを見ると、ブラウザが%コードをש記号に適切に変換しているため、URLで記号が正しく表示されます。

編集:このアプローチが機能すると報告する人もいます

$hebrew  = 'ס֑ס֒ס֓ס֔ס֕ס֖ס֗ס֘ס֙ס֚ס֛ס֜ס֝ס֞ס֟ס֠ס֡ס֢ס֣ס֤ס֥ס֦ס֧ס֨ס֩ס֪ס֫ס֬ס֭ס֮ס֯סְסֱסֲסֳסִסֵסֶסַסָסֹוֺסֻסּסֽ־סֿ׀סׁסׂ׃סׄסׅ׆סׇאבגדהוזחטיךכלםמןנסעףפץצקרשתװױײ׳״';  
$config['permitted_uri_chars'] = $hebrew . ' a-z 0-9~%.:_\-';

(正直なところ、アルファベットが間違っていても私を責めないでください:P)

于 2012-06-10T10:48:35.610 に答える
0

CodeigniterがURLにリダイレクトする場合としない場合がある理由については説明できませんが、#URLに非ASCII文字を含めることはできません。すべての非ASCII文字は、次を使用してパーセントエスケープする必要がありますurlencode

<a href="http://www.domain.com/article/<?php echo urlencode('שלום'); ?>">Text</a>

ブラウザはこれを最悪の場合のフォールバックとしてバックグラウンドで実行する必要があるため、これで問題が解決するとは言えませんが、少なくともより正確です。

于 2012-06-10T11:05:52.190 に答える