問題タブ [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.
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 に変換する方法を見つける必要があるようです。
c# - 文字列内の utf8mb4 文字を削除する方法
C# を使用して、文字列から utf8mb4 文字 (絵文字など) を削除して、結果が完全に utf8 に準拠する方法を教えてください。
ほとんどの解決策にはデータベース構成の変更が含まれますが、残念ながら私にはその可能性がありません。
javascript - PHPとJSでutf8mb4でエンコードされた文字の長さを取得する方法
絵文字の保存をサポートするmysqlを使用していますutf8mb4
が、phpまたはjs側では、テキストエリア入力の最大長の機能である正しい長さを取得できません。
私が知る限り、utf8mb4 は php または Web 側ではサポートされていません。誰もそれを作る方法を知っていますか?
Twitterでサポートされているjs側でそれを解決するためのjsを取得するだけです! twitter-text-js を参照
しかしphp側でどうやって作るのか、新しいtwitter-text-phpが見つからない?私もこの答えを見つけましたが、それをどのように使用しますか?
mysql - MySql が絵文字文字列に対して間違った結果を返す
データベース、テーブル、フィールドはすべて utf8mb4 を使用しています。絵文字記号をいくつかのフィールドにうまく保存できます。今、私は次のようなクエリを試みます:
SELECT * FROM user
WHERE name=''
驚くべきことに、結果は「」などのフィールド名が異なるレコードです
mysql は絵文字文字列を長さで一致させますが、内容では一致させないようです。
その問題を解決するためのアイデアはありますか? どうもありがとう。
mysql - MySQL はリトラル絵文字を選択できますが、絵文字をテーブルに保存しません
MySQL のテーブルにいくつかの絵文字を挿入しようとしていますが、値は疑問符 (????) として保存されます。
utf8mb4
適切なエンコーディングでデータベースを作成するようにしました。
次に、MySqlが絵文字を理解できるかどうかを確認しようとしたので、次のようにしました。
それから私はこれをしました:
それを修正するために何をすべきかわかりません..
**編集**:コメントで要求されたように、次のコマンドを実行しました: