問題タブ [mb-convert-encoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - mb_convert_encoding、mb_detect_encoding、およびUTF-8エンコーディングを使用したMySqlのセキュリティ
安全な方法でMySqlにレコードを追加するために、以下のコードを使用する予定です。私の質問:
- 私はいつも管理ページのフォームを使って自分の記事を入力します。私のmysqlデータベースとテーブルはUTF-8でエンコードされているため、照合:utf8_unicode_ci; そして、すべてのWebページはcharset = utf-8ですが、関数の最初の文はまだ必要ですか(文はmb_convert_encodingで始まります...)
- 2-)Webページビューアで可能ですか?すべてのエンコーディング(web&mysql)aerがutf-8に設定されているにもかかわらず、テキストエリアへのコメント入力がutf-8でエンコードされていません
以下のコードは改善が必要ですか?
function safe_input_into_mysql($safe_str)
{
$safe_str = mb_convert_encoding($safe_str, 'UTF-8', mb_detect_encoding($safe_str));
$safe_str = mysqli_real_escape_string($dbc, $safe_str);
return $safe_str;
}
php - Windows-1252 での mb_detect_encoding からの予期しない結果
Windows-1252文字エンコーディングに関するウィキペディアの記事を読みました。バイト値が 128 未満の文字の場合、ASCII/UTF-8 と同じにする必要があります。
意味あり:
php -r "var_export(mb_detect_encoding(\"\x92\", 'windows-1252', true));"
'Windows-1252'
左巻きのアポストロフィは正しく検出されます。
php -r "var_export(mb_detect_encoding(\"a\", 'windows-1252', true));"
false
は?文字「a」は Windows-1252 ではありませんか?
これを実行している端末は UTF-8 に設定されています。したがって、文字「a」の ASCII と同じバイト シーケンスである必要があります。変数を最小限に抑えるために、正しい Windows-1252 を指定すると、バイト シーケンス:
php -r "var_export(mb_detect_encoding(\"\x61\", 'windows-1252', true));"
false
これらの場合、「strict」パラメーター (かなり役に立たないドキュメントがあります) を変更しても何も起こりません。
php - PHPでCSVファイルをUCS-2LEエンコーディングに変換する
csvファイルを作成しています。UCS-2LE エンコーディングにする必要があります。次のことを試しましたが、どちらも機能しません。
$value = mb_convert_encoding($value,"UCS-2LE");
$value= iconv( mb_detect_encoding( $value ), 'UCS-2LE', $value );
Notepad++ でファイルを開くと、エンコーディングが ANSI であることがわかります。
コード:
php - PHP: ASCII 値 126 ~ 160 のフィルターで UTF8_decode が必要。提案された解決策
以前、この問題の調査を開始しました ここ。真の問題と提案された解決策は次のとおりです。
32 ~ 255 の ASCII 文字値を持つファイル名は、utf8_encode() で問題を引き起こします。具体的には、126 から 160 までの文字値を正しく処理しません。これらの文字名を持つファイル名はデータベースに書き込まれる可能性がありますが、これらのファイル名を PHP コードの関数に渡すと、ファイルが見つからないなどのエラー メッセージが生成されます。
問題のある文字を含むファイル名を getimagesize() に渡そうとしたときに、これを発見しました。
utf8_encode に必要なのは、126 と 160 の間の包括的な値の変換を除外する一方で、他のすべての文字 (または任意の文字、文字、またはユーザーの欲望の文字範囲の変換を含む) の変換を除外するフィルターです。 、提供された理由により)。
私が考案したソリューションには、次に示す 2 つの関数と、それに続くアプリケーションが必要です。
PHP7 (ナンバリングで 6 はスキップされていますか?) だけが特定の文字値を除外するために utf8_encode() にフィルターを含める場合、これは必要ありません。
php - html エンティティを UTF-8 に変換しますが、既存の UTF-8 は保持します
HTML エンティティを UTF-8 に変換したいのですが、mb_convert_encoding
すでに UTF-8 でエンコードされている文字を破棄します。正しい方法は?