- PR -

mysqlの文字化け

1
投稿者投稿内容
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-12-12 21:40
こんばんは。

mysql4.1とjspを使っています。htmlで表示するときに文字化けが起こって
困っています。

mysqlの設定ではsjisを使っていて、テーブルにはきちんとした日本語が入っています。
しかし、それを取得してブラウザで表示すると、どうしても?????????と、すべて?????として表示されます。

文字化けでも、あまり見られない状態だと思います。

この原因は何かがわからないので、解決方法を教えてください。
よろしくお願いします。
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-12-12 23:42
ちなみに、my.iniは[mysql][mysqld]で,

default-character-set=sjisとしてあります。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-12-13 01:22
jspがUnicodeを期待しているからでは?

jspの最初に
コード:
<%@ page language="java"
        pageEncoding="Shift_JIS"
        contentType="text/html; charset=Shift_JIS"
%>


を入れてみたらどうですかね?
しばらくjsp/javaはつかってなくて古い記憶なんで、定かじゃないですが
こんなのを入れて解消した記憶があります。

その時は
Apache + Tomcat + postgreSQL + jdbc でしたが..
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-12-13 03:01
ありがとうございます。しかし、現在それは書いてあります。

DBからとってくるときに、Systemで表示させてみると、そのときにはすでに?????になってしまっていることを発見しました。

ということはmysqlに問題があると思うのですが、DOSでselectをすると、きちんと日本語で表示されるという不思議な現象です。

jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-12-13 08:58
後は取り出した値をこんな変換をかけたかも..

String newValue = new String(orgValue.getBytes("8859_1"), "SJIS"));

javaはユニコードで処理するのが前提なので、それをバイト文字列として扱って
あげる必要があるとかなんとか、そんなんだったと思います。

あいまいな、回答ですみません。
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-12-13 12:01
うーん。どうも、resultsetに入るときに??????になっているみたいです。

<javaはユニコードで処理するのが前提なので、それをバイト文字列として扱って
あげる必要があるとかなんとか、そんなんだったと思います

はい。だから、mysqlのstatusで、conn. character-setをみると、そこまでsjisになっているのがいけないのかと思うのですが、上手く変えられません。utf8にしてみたいのですが。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-12-13 15:25
クライアント側のエンコーディング指定
は接続のしかたでいろいろ では
 ■JDBC接続
http://www.nihon-eng.co.jp/c-break/TechNote/mysql/MySQL_JDBC.htm

まず useUnicode パラメータですが---
次の characterEncoding パラメータですが、---
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-12-15 00:45
ありがとうございます。あれから、とりあえずODBCをJDBCに変えて、エンコーディングを指定したら、文字化けは直りました。。どうもJDBCやODBCは、不安定ですね。機械との相性が大きいです。
1

スキルアップ/キャリアアップ(JOB@IT)