こんにちは。
現在Javaで書かれたNutchという検索エンジンプログラムをWindowsXPとFedore core 6、それぞれで動作実験しております。
大部分が正常に動作しているのですが、何故かcache.jspで、インデックス化したウェブサイトのキャッシュを表示する際に問題が発生してしまいます。
■問題の詳細
WindowsXPをサーバとして別のWindowsXPからインターネットを通して表示しますと、Shift_JISで書かれたウェブサイトのキャッシュだけが正常に表示され、EUC-JPやUTF-8で書かれたウェブサイトのキャッシュは文字化けしてしまいます。
またFedora core 6をサーバとしてWindowsXPから表示しますと、UTF-8で書かれたウェブサイトのキャッシュだけが正常に表示され、EUC-JPやShift_JISで書かれたウェブサイトのキャッシュは文字化けしてしまいます。
なお2つのサーバ上にあるNutchは同じバージョンで、クライアントとして使用したWindowsXPも同じものです。クライアント側でのプラウザにはIE6・IE7・Opera・Firefox・NN等を使用しました。
これまで、Apache・Tomcat・Java-SDK・Nutchのバージョンを変えたり設定を色々変え実験しました。またcache.jspの内容を書き換えて実験しましたが、どれも失敗に終わってしまいました。
しかしhttp://www.mozdex.com/こちらのサイトでは、言語・文字コードに関わらず、正常にキャッシュを表示しております。
現在OSを変えるべきかどうか検討しております。
どのような意見でも構いませんので、よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
Nutchを使ったことが無いのですが、
JavaMailで似たような現象があったので書いてみます。
もし何かのヒントにでもなれば幸いです。
インデックス化して表示ということは
検索ヒットしたページの一部を取り込んでいるのですよね?
もしここで、取り込んだデータに複数の文字コードが混在するなら、
検索結果で特定の1種類しか正常に表示できないのは当たり前のような気がします。
インデックスデータを作成する際に、文字コード変換して統一って
出来ないですかね…。
提示されたJSPでしたら、ブラウザ表示はUTF-8になるはずなので
Shift_JISのインデックスはUTF-8に変換…とか。
ご回答ありがとうございます。
貴方様の考えは良く分かりますが、一度私も同じように考え実験してみたところやはり関係ないように思えます。
というのはFedora core 6上でインデックスデータを作成し、それをコピーしてWindowsXP側のNutchのインデックスデータとしてプラウザからアクセスしてみましたが、
プラウザのエンコーディングはUTF-8でShift_JISのキャッシュのみ正常に表示されました。
つまり、クロールしてデータを取り込む際には特に問題は発生していないのだと思います。
OSによって正常に表示されるキャッシュの文字コードが変わってしまうことと、またFedora core 6の場合はSYSCONFIGの文字コードを変えることによって(例えばEUC-JPに設定した場合は正常に表示されるキャッシュが一つもない)キャッシュの表示が変わってしまうことから、やはりOS・OS側の設定等を疑っています。
とはいえヒントになるのではないかという好意、誠にありがとうございました。
No.2
- 回答日時:
META要素を使用しなくてはいけないのでしょうか?
エンコードは3行めでを指定しているので、プロトコルレベルでクライアントに伝わると思います。
jspやServletでは必ずcharsetを指定するので、META要素を使うとかえって文字化けの原因になるような気がします。
度々ご指摘ありがとうございます。
METAタグは削除したり、別の文字コードを指定したりとすでに試しておりますが、どちらも失敗でした。
Mozdex.comがそうしているからというわけではございませんが、ソース表示を見て見たところMETAタグもあり、プラウザのソースから見れる部分はデフォルトのままでしたので、原因は別の所にあるのではないかと考えております。
No.1
- 回答日時:
.jspファイルのエンコード指定の問題ではないでしょうか。
Nutchはデフォルトではエンコード指定がされていないので、.jspファイルの pageディレクティブを弄るといいかもしれません。
Fedora coreの標準文字コードが「UTF-8」、Windowsが「Shift_JIS」を拡張した「Windows-31J」である事からも、少しは説得力が有るのではないかと思います。
参考URL:http://lucene.apache.org/nutch/docs/jp/
早速の回答、誠にありがとうございます。
ですが、このようにUTF-8でエンコード指定はしているつもりです。
なお、Metaタグの後にキャッシュが表示されます。
<%@ page
session="false"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import="java.io.*"
import="java.util.*"
import="org.apache.nutch.searcher.*"
import="org.apache.nutch.parse.ParseData"
import="org.apache.nutch.metadata.Metadata"
import="org.apache.nutch.metadata.Nutch"
import="org.apache.hadoop.conf.Configuration"
import="org.apache.nutch.util.NutchConfiguration"
%><%
Configuration nutchConf = NutchConfiguration.get(application);
NutchBean bean = NutchBean.get(application, nutchConf);
request.setCharacterEncoding("UTF-8");
bean.LOG.info("cache request from " + request.getRemoteAddr());
Hit hit = new Hit(Integer.parseInt(request.getParameter("idx")),
Integer.parseInt(request.getParameter("id")));
HitDetails details = bean.getDetails(hit);
String id = "idx=" + hit.getIndexNo() + "&id=" + hit.getIndexDocNo();
String language =
ResourceBundle.getBundle("org.nutch.jsp.cached", request.getLocale())
.getLocale().getLanguage();
Metadata metaData = bean.getParseData(details).getContentMeta();
String content = null;
String contentType = (String) metaData.get(Metadata.CONTENT_TYPE);
if (contentType.startsWith("text/html")) {
String encoding = (String) metaData.get("CharEncodingForConversion");
if (encoding != null) {
try {
content = new String(bean.getContent(details), encoding);
}
catch (UnsupportedEncodingException e) {
content = new String(bean.getContent(details), "windows-1252");
}
}
else
content = new String(bean.getContent(details));
}
%>
<!--
<base href="<%=details.getValue("url")%>">
-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- HTML・CSS 詳しい方に質問です。 早急に解決したいと思っています。 ポートフォリオをMacBook で作成したと 2 2023/05/12 17:40
- Chrome(クローム) 急募 Chromeの不調 1 2023/02/20 20:06
- その他(プログラミング・Web制作) ワードプレスのプラグインであるAddQuicktagを使いたいが… 3 2022/04/18 15:03
- HTML・CSS Chrome のキャッシュについて 3 2022/05/26 07:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ccmcacheとは ccmcacheとは何か...
-
SSDでネット閲覧は高速化します...
-
SIMカードには何が入っているの...
-
エロ動画探索してたらロリ動画...
-
VIDEOタグでキャッシュさせない...
-
HDDの回転数とキャッシュ、どち...
-
楽天キャッシュでマクドナルド...
-
キャッシュメモリはSRAMにあり...
-
Thumbs.adの読み方
-
ARPをクリアする理由について
-
HDDで8MBキャッシュ搭載・・?8...
-
更新前のホームページの内容を...
-
BIOSでキャッシュメモリとシャ...
-
教えて下さい。 Androidで勝手...
-
ネットワークの問題が起きたた...
-
GoogleDriveを使用してwebペー...
-
JUST PDFの「しおり」機能について
-
OutlookをひさしぶりにノートPC...
-
ザタイピングオブザデッドのシ...
-
英語翻訳ソフトは良いものはあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エロ動画探索してたらロリ動画...
-
ccmcacheとは ccmcacheとは何か...
-
SSDでネット閲覧は高速化します...
-
SIMカードには何が入っているの...
-
GoogleDriveを使用してwebペー...
-
L3キャッシュがゲームに与える...
-
ARPをクリアする理由について
-
px.a8.netとは何ですか
-
コピーした画像をデスクトップ...
-
ASUS RAMCache IIIについて、Wi...
-
PCに知らない画像がいつの間に...
-
HDDのキャッシュは数字が大きけ...
-
Vistaのアイコンキャッシュの削...
-
ネットワークの問題が起きたた...
-
Shfd0039.dtaが開けません。
-
iPhone版Googleフォトのオフラ...
-
Googleマップが逆さまになる
-
こちらの<教えて!goo>サ...
-
キャッシュクリアとは
-
文字化けの状態で上書き保存し...
おすすめ情報