文字化けについての質問です。


MySqlからCSVに吐き出す処理をしています。
テーブルの文字こーどはデフォでlatin1です。

hoge1 => 名前
hoge2 => なまえ

selectでデータに格納し文字コードを再度みてみたら?何故か下記に・・・
mb_detect_encoding($hoge1) => utf-8
mb_detect_encoding($hoge2) => ASCII


mb_convert_encoding($hoge1, 'SJIS', 'UTF-8');
mb_convert_encoding($hoge1, 'SJIS', 'ASCII');
上記をしても、SJISには変更できず文字化けします・・・

どなたかご教授ください。
よろしくです。

回答の条件
  • URL必須
  • 1人5回まで
  • 13歳以上
  • 登録:2010/04/21 18:42:02
  • 終了:2010/04/22 20:19:55

ベストアンサー

id:koriki-kozou No.2

koriki-kozou回答回数480ベストアンサー獲得回数792010/04/21 19:56:37

ポイント25pt

PHP: mb_detect_encoding - Manual

http://jp.php.net/manual/ja/function.mb-detect-encoding.php

PHP: mb_detect_order - Manual

http://jp.php.net/manual/ja/function.mb-detect-order.php


判定順序を変えてみるテスト

mb_detect_encoding($hoge1, 'sjis')


あとは php.ini のデフォルトがSJISかどうか

HTMLのメタタグでSJIS以外を設定していないかどうかといった具合に進む


今はここまで

id:xv1700

よくわかりません??

mb_detect_encoding($hoge1, 'sjis')

sjisで表示されますけど・・・

2010/04/21 21:10:13

その他の回答(2件)

id:koriki-kozou No.1

koriki-kozou回答回数480ベストアンサー獲得回数792010/04/21 18:56:14

ポイント40pt

9.3.6. 接続のキャラクタセットおよび照合順序

http://dev.mysql.com/doc/refman/4.1/ja/charset-connection.html


どの段階で文字化けが発生しているのかの切り分けが必要

まずは SET NAMES sjis を発行してからSELECTを発行するテスト実施

SET NAMES程度で直らなければphpのバージョンや php.ini の設定なども表にだす必要がある

id:xv1700

ありがとうございます。

ちょっと進展しました。

set names ujisに設定し

selectでデータに格納し文字コードを再度みてみたら

mb_detect_encoding($hoge1) => ASCII 

mb_detect_encoding($hoge2) => ASCII

ASCIIに統一されました。

2010/04/21 19:33:53
id:koriki-kozou No.2

koriki-kozou回答回数480ベストアンサー獲得回数792010/04/21 19:56:37ここでベストアンサー

ポイント25pt

PHP: mb_detect_encoding - Manual

http://jp.php.net/manual/ja/function.mb-detect-encoding.php

PHP: mb_detect_order - Manual

http://jp.php.net/manual/ja/function.mb-detect-order.php


判定順序を変えてみるテスト

mb_detect_encoding($hoge1, 'sjis')


あとは php.ini のデフォルトがSJISかどうか

HTMLのメタタグでSJIS以外を設定していないかどうかといった具合に進む


今はここまで

id:xv1700

よくわかりません??

mb_detect_encoding($hoge1, 'sjis')

sjisで表示されますけど・・・

2010/04/21 21:10:13
id:kick_m No.3

kick_m回答回数1372ベストアンサー獲得回数542010/04/22 01:19:06

ポイント15pt

まずバイナリで保存するようにコンパイルしてください。

あとmysqlの文字コード設定箇所は5種類くらいあるので、よく設定法を調べてください。

ま、ちゃんとコンパイルしてないやつだと、なにをやってもむだです。

http://www

id:xv1700

コンパイル?必要ありません。

元々のDBはデフォの設定なのでSQLはいじれません。なので、latin1から変更はできないんだよ。

それに、質問の答えになっとらん。

ひやかしか?

2010/04/22 20:15:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません