ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejsポストの中国語の文字化けしたコード

Nodejsポストの中国語の文字化けしたコード

WBOY
WBOYオリジナル
2023-05-11 12:23:36595ブラウズ

Node.js は、Web 開発で広く使用されている人気のあるサーバーサイド JavaScript エンジンです。ただし、POST リクエストを処理すると、中国語の文字が文字化けして表示されることが多く、これにより一連の問題が発生する可能性があります。

問題の理由は、HTTP プロトコルでは、POST リクエストのデータ エンティティ部分が Content-Type ヘッダーで指定されたエンコード方式でエンコードされるためです。リクエストを送信するクライアントとリクエストを受信するサーバーが異なるエンコード方式を使用している場合、中国語は文字化けします。

したがって、この問題を解決する鍵は、データの要求時と受信時に同じエンコーディングが使用されるようにすることです。以下にいくつかの解決策を示します。

  1. リクエストのエンコード方式を指定する

POST リクエストを送信するときに、Content-ヘッダーを入力します。リクエストに中国語の文字が含まれている場合は、Content-Type ヘッダーを application/x-www-form-urlencoded;charset=utf-8 に設定できます。つまり、エンコードに UTF-8 エンコードを使用します。

const data = new URLSearchParams();
data.append('username', '张三');
data.append('password', '123456');
fetch('/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
  },
  body: data
});
  1. レスポンスのエンコード方式を指定する

POSTリクエストを受信する際、Content-Typeヘッダーを設定することでレスポンスデータのエンコード方式を指定できます。同様に、応答に中国語の文字が含まれている場合は、Content-Type ヘッダーを text/html;charset=utf-8 に設定できます。つまり、エンコードに UTF-8 エンコードを使用します。ミドルウェアのエンコーディング処理

  1. ミドルウェアを使用して、POST リクエストのエンコーディングの問題を処理できます。 body-parser ミドルウェアは、リクエスト データのエンコードを自動的に処理し、リクエスト内のデータの送受信時に同じエンコードが使用されるようにする一般的なソリューションです。
  2. app.post('/login', (req, res) => {
      res.setHeader('Content-Type', 'text/html;charset=utf-8');
      res.send('<p>登录成功</p>');
    });
この例では、 body - パーサー ミドルウェアアプリケーションに追加され、POST リクエストのエンコードを処理するために使用されます。

一般に、POST リクエストにおける中国語の文字化け問題に対処するには、リクエストとレスポンスのエンコードが一貫していることを確認し、エンコードの問題を処理するミドルウェアを正しく使用する必要があります。これらのソリューションにより、アプリケーションで POST リクエストを処理するときに中国語の文字化けの問題が発生しないようにできるため、ユーザーとサーバー間の通信の処理が向上します。

以上がNodejsポストの中国語の文字化けしたコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。