私は、人々が独自の翻訳者を作成できるWeb サイトを開発しています。彼らは URL の名前を選択できます。それはデータベースに送信され、.htaccess を使用してリダイレクトしますwebsite.com/nameoftheirtranslator
に:
website.com/translator.php?name=nameoftheirtranslator
これが私の問題です:
最近、誰かが名前に特殊文字を含む翻訳者を作成したことに気付きました -> "LAEFÊVËŠI"。
しかし、それが処理され (php ファイルにポストされ、次にmysqli_real_escape_string
)、データベースに追加されると、単純に "LAEFVI" として表示されるため、特殊文字がどこかで失われていることがわかります。
ここで何をすべきかはよくわかりませんが、2つの方法があると思います。
- 文字を保持し、いくつかのエンコードを実行してみてください (どこから始めればよいかわかりません)
- それらを捨てて、翻訳者の名前に「通常の」文字のみを使用するようにユーザーに伝えます(理想的ではありません)
次のようなURLを持つことさえ可能かどうか疑問に思っていwebsite.com/LAEFÊVËŠI
ます-それはサーバーによって解釈できますか?
EDIT1:スタック オーバーフローが、まさにこの質問で、タイトルの特殊文字を.../using-special-characters-in-urls
!に変換することに気付きました。これは素晴らしい解決策のように思えます。â などの特殊文字を通常の文字 (â など) に変換する関数を作成できると思います。/#@"',&
そして、私は?のような他の文字を無視すると思います。考えてみると、このような問題を回避するためのかなり標準的で実践的な戦略がいくつかあるに違いありません。
EDIT2: 実際、今考えてみると(もっと)-このことを(英語だけでなく)あらゆる言語の人々が使用できるようにしたいので、URLに特殊文字を使用できるようにしたいと本当に思っています. そうは言っても、Google は として解釈しないことがわかりました。そのâ
ため、文字を通常の文字に翻訳しないと、翻訳者a
を見つけるのに苦労する可能性があります。LAEFÊVËŠI
ああ!