みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

フォルダ名が日本語の場合の文字化けについて

PHP Version 5.3.1
MySQL Version 5.1.41
です。

以前、プログラム(PHP)からデータベースに日本語のデータを挿入すると文字化けしていたので、
プログラムからデータベースを利用する際に「SET NAMES utf8」をセットしてから挿入したら
文字化けがなくなりました。
そして今度は、日本語で書かれたフォルダ名をプログラムから取得したら
文字化けしていた(データベースに挿入しても文字化けしたままです)ので、
「SET NAMES sjis」にセットし直して、日本語のフォルダ名をデータベースに
挿入したらそのデータに関しては文字化けが起こらなかったのですが、
今度は当然ながらプログラムに記述していた日本語のデータを挿入したら文字化けになりました・・・

[SET NAMES utf-8 の場合]
$arr = array('日本語'); → データベースへ挿入 → 文字化けなし
プログラムで取得した日本語のフォルダ名 → データベースへ挿入 → 文字化けする

[SET NAMES sjis の場合]
$arr = array('日本語'); → データベースへ挿入 → 文字化けする
プログラムで取得した日本語のフォルダ名 → データベースへ挿入 → 文字化けなし

プログラムの側では両方とも同時に挿入する感じなので、その都度「SET NAMES~」で
切り替えたりするのは難しい状況のですが、なにか良い解決方法はありますでしょうか?

投稿日時 - 2011-09-20 01:03:38

QNo.7022325

すぐに回答ほしいです

質問者が選んだベストアンサー

PHPでプログラムからの文字列をエンコードしてから処理すれば良いんじゃない?

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

投稿日時 - 2011-09-20 10:19:24

お礼

ご回答ありがとうございます。
次の場合で解決しました。

[SET NAMES sjis の場合]
$arr = array(mb_convert_encoding('日本語', "SJIS-win", "UTF-8");); → データベースへ挿入 → 文字化けなし
プログラムで取得した日本語のフォルダ名 → データベースへ挿入 → 文字化けなし

ありがとうございます。
なんとかこれで進めそうなのですが、そもそもなんで
上の2つの場合は片一方で文字化けしたりしなかったりするのでしょうか?
何か設定が間違っているのでしょうか?

投稿日時 - 2011-09-20 11:15:14

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

基本的にファイル名、フォルダ名に日本語を定義するのはNG.
ファイル内で日本語を使用する場合、S-Jifが主流ですよ。

投稿日時 - 2011-09-20 12:44:23

お礼

ご回答ありがとうございます。
そうですね、たしかにいろいろ問題がありそうですね・・・
なるべくそうしたいと思います。

投稿日時 - 2011-09-21 14:47:13

あなたにオススメの質問