前提・実現したいこと
requestメソッドで返ってきた文字列を
var jschardet = require('jschardet');
var jconv = require( 'jconv' )
でエンコード変換しているのですが、
このとき、エンコードの種類がわからない場合、エラーを吐き、該当のコードのcatchに捕まります。
catchに捕まる際、返ってきたものが、数値文字参照の場合があります。
このとき、返ってきたものが、数値文字参照だったら、それを文字にする変換をかけて、それ以外の理由でcatchしていたら、
何もしないという処理にしたいのですが、
それには、おそらく、catchで捕まっているものが数値文字参照かどうかを調べればよいと思うのですが、
それを調べる方法ってありますか?
もしくは、他に何かよい方法があればご教示いただきたいです。
catchに捕まるものを必ず数値文字参照の変換をかけるというのは、やり方としてよくない
(catchに捕まったものが数値文字参照以外だったらよくないはず)と思ったので、
このような質問をさせていただきました。
ちなみに、例えば、下記Googleにrequestを投げると、数値文字参照が返ってきます。
https://www.google.com/
もちろん、Googleのみ対応という汎用的でないコードにするつもりはありません。
該当のソースコード
node
1 request(options, function (err, res, data) { 2 if (err) { 3 } else { 4 try{ 5 var detectResult = jschardet.detect(data); 6 if(!(detectResult.encoding=="UTF-8")){ 7 data = jconv.convert(data, detectResult.encoding, "UTF-8" ); 8 } 9 }catch(e){ 10 //ここで、dataが数値文字参照の文字列なのかどうか知りたい。 11 } 12 data = data.toString(); 13 }
エンコードの種類がわからないときに吐くエラーは下記です。
catchのeの出力内容。
[Error: Encoding not recognized.]
Googleにrequestして取得した文字は下記です。
Googleに限らず、全てのサイトにおいて、取得される文字が数値文字参照かどうか知りたいです。
世界中のあらゆる情報を検索するためのツールを提供しています。さまざまな検索機能を活用して、お探しの情報を見つけてください。
あなたの回答
tips
プレビュー