Node.js は、Web 開発で広く使用されている人気のあるサーバーサイド JavaScript エンジンです。ただし、POST リクエストを処理すると、中国語の文字が文字化けして表示されることが多く、これにより一連の問題が発生する可能性があります。
問題の理由は、HTTP プロトコルでは、POST リクエストのデータ エンティティ部分が Content-Type ヘッダーで指定されたエンコード方式でエンコードされるためです。リクエストを送信するクライアントとリクエストを受信するサーバーが異なるエンコード方式を使用している場合、中国語は文字化けします。
したがって、この問題を解決する鍵は、データの要求時と受信時に同じエンコーディングが使用されるようにすることです。以下にいくつかの解決策を示します。
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 });
POSTリクエストを受信する際、Content-Typeヘッダーを設定することでレスポンスデータのエンコード方式を指定できます。同様に、応答に中国語の文字が含まれている場合は、Content-Type ヘッダーを text/html;charset=utf-8 に設定できます。つまり、エンコードに UTF-8 エンコードを使用します。ミドルウェアのエンコーディング処理
app.post('/login', (req, res) => { res.setHeader('Content-Type', 'text/html;charset=utf-8'); res.send('<p>登录成功</p>'); });
以上がNodejsポストの中国語の文字化けしたコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。