人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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には変更できず文字化けします・・・

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


●質問者: xv1700
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ASCII CSV MySQL SELECT SJIS
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● koriki-kozou
●40ポイント

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

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


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

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

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

◎質問者からの返答

ありがとうございます。

ちょっと進展しました。

set names ujisに設定し

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

mb_detect_encoding($hoge1) => ASCII

mb_detect_encoding($hoge2) => ASCII

ASCIIに統一されました。


2 ● koriki-kozou
●25ポイント ベストアンサー

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以外を設定していないかどうかといった具合に進む


今はここまで

◎質問者からの返答

よくわかりません??

mb_detect_encoding($hoge1, 'sjis')

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


3 ● kick_m
●15ポイント

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

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

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

http://www

◎質問者からの返答

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

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

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

ひやかしか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ