問題タブ [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.

0 投票する
1 に答える
577 参照

php - mb_convert_encoding、mb_detect_encoding、およびUTF-8エンコーディングを使用したMySqlのセキュリティ

安全な方法でMySqlにレコードを追加するために、以下のコードを使用する予定です。私の質問:

  1. 私はいつも管理ページのフォームを使って自分の記事を入力します。私のmysqlデータベースとテーブルはUTF-8でエンコードされているため、照合:utf8_unicode_ci; そして、すべてのWebページはcharset = utf-8ですが、関数の最初の文はまだ必要ですか(文はmb_convert_encodingで始まります...)
  2. 2-)Webページビューアで可能ですか?すべてのエンコーディング(web&mysql)aerがutf-8に設定されているにもかかわらず、テキストエリアへのコメント入力がutf-8でエンコードされていません
  3. 以下のコードは改善が必要ですか?

    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;
    }

0 投票する
1 に答える
1104 参照

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」パラメーター (かなり役に立たないドキュメントがあります) を変更しても何も起こりません。

0 投票する
1 に答える
654 参照

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 であることがわかります。

コード:

0 投票する
0 に答える
276 参照

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() にフィルターを含める場合、これは必要ありません。

0 投票する
3 に答える
4141 参照

php - html エンティティを UTF-8 に変換しますが、既存の UTF-8 は保持します

HTML エンティティを UTF-8 に変換したいのですが、mb_convert_encodingすでに UTF-8 でエンコードされている文字を破棄します。正しい方法は?