ホームページ > 記事 > ウェブフロントエンド > ノードutf8の漢字が文字化けする場合の対処方法
node utf8 での中国語文字化けの解決策: 1. "typeof" を通じて "SarchName" の型を確認します; 2. "Name=iconv.decode(name,'gbk')" メソッドを使用して、エンコードをutf8に変換できます。
このチュートリアルの動作環境: Windows10 システム、ノード v14.16.0 バージョン、DELL G3 コンピューター
次の場合の対処方法node utf8 漢字が文字化けしますか?
node.js は、GBK から UTF8 へのエンコードを実装し、中国語文字化けの解決策を実装します。
これを行う前にニーズがあったので、実行しました。ノードを使用して名前のあいまいクエリを実行します。実際、これはこれ以上簡単なことはない単純な問題ですが、私は 2 日間、この問題で立ち往生しました。
ビジネス ニーズのため、新しい関数に対してあいまいクエリを作成します。
まず、ノード http サービスをセットアップする必要があり、次に mysql を構成しました。 ORM モデルを確立した後、SQL ステートメントを書き始めようとしたときに、ノードが utf8 でエンコードされていたため、奇妙なことに遭遇しました。しかし、当社のデータベースは GBK エンコードを使用しているため、データ クエリを実行するとエラーが発生し、エンコードの問題が原因でクエリが失敗しました。
この問題も非常に簡単で、トランスコードするだけです。 ! !
Baidu ノードのトランスコーディング メソッドを使い始めたときに、iconv-jschardet プラグインを見つけたので、npm にアクセスして確認しました。フロントエンドから送信された文字を GBK エンコードに変換するために
const iconv = require('iconv-jschardet'); SarchName = iconv.encode(SarchName, 'gbk');
を使い始めました。とても満足しました。
結果は依然としてエラーです。このエラーのため、私は午後をかけて探しました。変換が成功したかどうかわからないので、数え切れないほどの方法を試しましたが、エンコードの問題は解決できませんでした。そこで、PHPを書くときにクエリを実行するときに、SQLを使用してバイナリに変換してあいまい一致を行うことを考えました。
そこで、SarchName を入力したところ、Obj であることがわかりました。非常に混乱し、String であるべきだと思いました。そこで、出力を印刷したところ、それが Buffer であることがわかりました。 String に直接変換しないほうがよいことがわかり、Buffer.toString() メソッドを使用しましたが、それでも機能しなかったので、ドキュメントを調べました。 GBK エンコードが存在しないことがわかり、これは大きな頭痛の種でした。
次に、ASCII を試してみましたが、まだ機能しないことがわかりました。そこで、バイナリを試してみましたが、問題ありませんでした。
#** ファジー クエリの実行は問題なく完了し、返されたデータは GBK エンコードされたままです。それは簡単です! ! ! !次に、それを utf8
Name=iconv.decode(name,'gbk')
に変換し、戻って問題がないことが確認されたら、OK は完了です。
しばらくして、他の人がバグを発見し、その人の名前が完全に表示されないと言いました。 ! ! !
その結果、この記号「�」が一部の人の名前に現れました。 。 。 。 。
Baidu は、デコードが不完全であることを発見し、解決策はまだありません。 。 。
最終的には、indexOf('�') メソッドを使用して文字列
内のまれな文字を取得し、そのステータスを記録してから、PHP を使用してトランスコードする以外に選択肢はありませんでした。それ。
一言で言えば、ピット! **
追加: Node.js の gbk から utf8 への変換では、依然として一部のまれな文字の変換に失敗し、文字化けが発生します。gbk を使用するライブラリでは、ノードに中国語のトランスコーディングなどの処理を実行させず、何かに変更することをお勧めします。それ以外の場合は言語。
推奨学習: 「node.js ビデオ チュートリアル 」
以上がノードutf8の漢字が文字化けする場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。