前提
現在Next.js+Typescriptでアプリケーションを作成しています。その際Google検索した際に出てくるサジェストを取るAPIを作ろうと思い、apiディレクトリにsuggest.tsを作り、呼び出したところ、アプリケーション自体から呼び出した場合もブラウザ上から呼び出した場合も、日本語が文字化けしてしまいます。どのようにすれば文字化けが解消するでしょうか?
ソースコードは以下のとおりです。エラーは特に出ていません。またGoogleのAPIはXMLが返ってくる仕様だったので、node-html-parserを使用してXMLを解析しています。
該当のソースコード
typescript
1import { NextApiRequest, NextApiResponse } from "next"; 2import { parse } from 'node-html-parser'; 3 4export default async function postsuggest(req:NextApiRequest,res:NextApiResponse){ 5 const resXML=await fetch("http://www.google.com/complete/search?hl=ja&output=toolbar&q="+req.query.word,).then(res=>res.text()) 6 const root=parse(resXML) 7 const returnArray=root.querySelectorAll("suggestion").map((tag)=>tag.getAttribute("data")) 8 const returnString=returnArray.join(",") 9 10 res.status(200).send(JSON.stringify({wordList:returnString,test:"日本語テスト"}, null, 2)) 11}
youtubeと入力し出力させてみた例
( http://localhost:3000/api/suggest?word=youtube にアクセス)
json
1{ 2 "wordList": "youtube,youtube �ス_�スE�ス�ス�ス�ス�ス[�スh,youtube music,youtube mp3,youtube�スv�ス�ス�ス~�スA�ス�ス,youtube premium,youtube studio,youtube�ス�ス�ス�ス,youtube�スX�ス^�スW�スI,youtube �ス�ス�ス�スネゑソス", 3 "test": "譌・譛ャ隱槭ユ繧ケ繝�" 4}
このように、XMLの部分だけでなく、日本語をそのまま出力しているtestの部分も文字化けしています。
試したこと
調べたのですがわからなかったのでBingAIに聞き、10行目の部分を
「res.status(200).json({wordList:returnString,test:"日本語テスト"})」
から
「res.status(200).send(JSON.stringify({wordList:returnString,test:"日本語テスト"}, null, 2))」
に変えたのですが、特に意味はありませんでした。
使用している環境
OS : Ubuntu 22.04
ブラウザ : vivaldi 5.7.2921.63
Node.js : v18.15.0
npm : 9.5.0

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。