問題タブ [utf8mb4]

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 投票する
2 に答える
254 参照

mysql - wordmove を使用してデプロイする Variant vagrant と utf8mb4 の問題

バリアント vagrant と wordmove を使用して作業を展開しようとしています。

VVV

何度か試みた後、VVV - mysql 5.5 と私の遠隔サーバー - mysql 5.1 の間に mysql のバージョンの違いがあることを理解しました。問題はutf8mb4 ですwordmoveが ローカル データベースをダンプすると、utf8mb4 が作成され、もちろん 5.1 で離れた私の mysql がダンプを壊します。

誰かがこの問題を抱えているか、これを解決する方法を知っていますか?

私の下手な英語を読んでくれてありがとう。

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

mysql - MySqlからperlでutf8mb4文字列の長さを取得する

文字列を取り、スペースなしでその長さをチェックする小さな perl 関数を書きました。基本的なコードは次のようになります。

この関数に特殊文字 (ヘブライ文字など) を含む文字列を指定すると、うまく機能するようです。この問題は、文字セットが utf8mb4 の MySql 列からの値を使用するときに発生します。このような場合、計算される値は前の例の値より高くなります。

このような動作が発生する理由は推測できます。特殊文字はテーブルに 4 バイトで記述されているため、utf8 エンコーディングでは各文字が 2 文字として計算されます。

utf8mb4として定義されたDBテーブルからの文字列から正しい文字数を取得するために、上記を解決する方法を知っている人はいますか?

編集:

上記のコードに関するその他の情報:

関数の引数として使用される DB 列は、utf8mb4_unicode_ci の照合で VARCHAR(1000) 型です。次のように構成されたMySql接続を介して行をフェッチしています:

データ値の例は、"שלום עולם" (ヘブライ語で "Hello World" を意味します) です。

1) 呼び出すとfoo($request->{VALUE});(VALUE は DB からの列データ)、結果は 16 になります (各ヘブライ文字は 2 文字としてカウントされ、その間の 1 つのスペースは無視されます)。この場合のダンパーは次のとおりです。

2) 呼び出す場合foo("שלום עולם");:

  • を宣言するuse utf8;と、結果は 8 になります (この文字列には 8 つの可視文字があるため)。この場合のダンパー (Useqq=1) は次のとおりです。

    $VAR1 = "\x{5e9}\x{5dc}\x{5d5}\x{5dd} \x{5e2}\x{5d5}\x{5dc}\x{5dd}";

  • 「use utf8;」を宣言しない場合、結果は 16 で、DB から値を送信する場合と同様です。

    $VAR1 = "\327\251\327\234\327\225\327\235 \327\242\327\225\327\234\327\235";

作業を開始する前に、受信した値を UTF8 に変換する方法を見つける必要があるようです。

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

c# - 文字列内の utf8mb4 文字を削除する方法

C# を使用して、文字列から utf8mb4 文字 (絵文字など) を削除して、結果が完全に utf8 に準拠する方法を教えてください。

ほとんどの解決策にはデータベース構成の変更が含まれますが、残念ながら私にはその可能性がありません。

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

javascript - PHPとJSでutf8mb4でエンコードされた文字の長さを取得する方法

絵文字の保存をサポートするmysqlを使用していますutf8mb4が、phpまたはjs側では、テキストエリア入力の最大長の機能である正しい長さを取得できません。

私が知る限り、utf8mb4 は php または Web 側ではサポートされていません。誰もそれを作る方法を知っていますか?

Twitterでサポートされているjs側でそれを解決するためのjsを取得するだけです! twitter-text-js を参照

しかしphp側でどうやって作るのか、新しいtwitter-text-phpが見つからない?私もこの答えを見つけましたが、それをどのように使用しますか?

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

mysql - MySql が絵文字文字列に対して間違った結果を返す

データベース、テーブル、フィールドはすべて utf8mb4 を使用しています。絵文字記号をいくつかのフィールドにうまく保存できます。今、私は次のようなクエリを試みます:

SELECT * FROM userWHERE name=''

驚くべきことに、結果は「」などのフィールド名が異なるレコードです

mysql は絵文字文字列を長さで一致させますが、内容では一致させないようです。

その問題を解決するためのアイデアはありますか? どうもありがとう。

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

mysql - MySQL はリトラル絵文字を選択できますが、絵文字をテーブルに保存しません

MySQL のテーブルにいくつかの絵文字を挿入しようとしていますが、値は疑問符 (????) として保存されます。

utf8mb4適切なエンコーディングでデータベースを作成するようにしました。

ここに画像の説明を入力 ここに画像の説明を入力

次に、MySqlが絵文字を理解できるかどうかを確認しようとしたので、次のようにしました。

それから私はこれをしました:

それを修正するために何をすべきかわかりません..

**編集**:コメントで要求されたように、次のコマンドを実行しました: