[解決済み] PHPです。元の文字セットを知らなくても、任意の文字列を UTF-8 に変換する、あるいは少なくとも変換しようとする
質問
私は世界中のクライアントと取引するアプリケーションを持っています。当然ながら、データベースに入るものはすべてUTF-8でエンコードされたものにしたいのです。
私にとっての主な問題は、文字列のソースがどのようなエンコーディングであるかがわからないことです。
<form accept-charset="utf-8">
は、ユーザーが実際にフォームを送信した場合にのみ有効です)、またはアップロードされたテキストファイルからかもしれないので、私は本当に入力を制御することはできません。
必要なのは、データベースに入るものが、可能な限りUTF-8エンコードされていることを確認する関数またはクラスです。試してみたところ
iconv(mb_detect_encoding($text), "UTF-8", $text);
が、これには問題があります(入力が 'fiancée' の場合、'fianc' を返します)。いろいろと試してみたのですが =/。
ファイルのアップロードについては、エンドユーザーに使用するエンコードを指定してもらい、出力がどのように見えるかのプレビューを表示するというアイデアが気に入っていますが、これは厄介なハッカーに対する助けにはなりません(実際、彼らの生活を少し楽にすることはできます)。
この件に関する他のSOの質問も読みましたが、どれも"RSSフィードを解析する必要がある"や"ウェブサイトからデータをスクレイピングする"(あるいは、実際に"できない")など微妙に異なるようですね。
しかし、少なくとも良いものを持つものがあるはずです。 試す !
解決方法は?
あなたが求めていることは、非常に難しいことです。可能であれば、ユーザーにエンコードを指定してもらうのが一番です。攻撃を防ぐのは、その方が簡単でも難しくもないはずです。
しかし、こうしてみるのもいいかもしれません。
iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
strictに設定することで、より良い結果が得られるかもしれません。
関連
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み] エンコーディングを検出し、すべてをUTF-8にする。
-
[解決済み] UTF-8とBOMなしUTF-8の違いは何ですか?
-
[解決済み] PHPで文字列を数値に変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] PHP 未定義関数への呼び出し
-
[解決済み] Linuxでスクリプトを使用してファイルのエンコーディングを調べるにはどうしたらいいですか?