質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

0回答

232閲覧

requestメソッドで、数値文字参照が返ってきた場合の処理。

tkshp

総合スコア174

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

1クリップ

投稿2018/10/29 09:13

編集2018/10/29 10:03

前提・実現したいこと

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に限らず、全てのサイトにおいて、取得される文字が数値文字参照かどうか知りたいです。

世界中のあらゆる情報を検索するためのツールを提供しています。さまざまな検索機能を活用して、お探しの情報を見つけてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/29 09:37

質問に、タグやらなんやら情報を付加したほうがよいかと。
wwbQzhMkhhgEmhU

2018/10/29 12:16

文字参照はhtmlのエンコーディングに依らない仕様だったかと思います。なんでリクエストの中に入ってきてるのか知りませんが、わざわざそうなっているものを文字にしていいのでしょうか?そういうインターフェースならいいんですが…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問