PHPで「テスト」->「テスト」(UTF8)に変換することができる人はいらっしゃいますか?「テスト」はMySQLでテストが文字化けたものを正常な日本語としてMySQLに入れなおさないといけません。

どうしてもPHPのみでやらないといけなくてこういったやり方はできないので難儀しています。
http://www.miacis.co.jp/?p=160

$flag = mb_detect_encoding($str, "auto");
「テスト」を調べたらUTF8とでたので

$str = mb_convert_encoding($str, "UTF-8", "UTF-8");
で変換してもやはりダメで、

前に
mb_language("Japanese");を直前に記述して
$str = mb_convert_encoding($str, "UTF-8", "auto");
にしてもダメで

同じUTF8同士なので変換?というべきかわからないのですが、var_dump();で調べたとき「テスト」ではなく「テスト」として取得できるやり方またはコードヒントを教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

PHPやMySQLには詳しくないのですが、


化け方は、UTF-8のバイト列をISO 8859-1で読んだものに間違いありません。
> 「テスト」を調べたらUTF8とでた
ということですので、考えられることは2つ。
・文字列はUTF-8で正しく入っているが、表示の段階でISO8859-1として解釈されている
・文字列は「UTF-8のバイト列をISO8859-1で読んだもの」がUTF-8に変換されて入っている
前者ならば分かりません。
後者ならUTF-8からISO8859-1に変換してからUTF-8として読んでみてください。
    • good
    • 0
この回答へのお礼

>化け方は、UTF-8のバイト列をISO 8859-1で読んだものに間違いありません。
ヒントを下さりありがとうございます。
でもPHPだけではやっぱりダメみたいです。ありがとうございます。

お礼日時:2014/05/25 14:57

Qiita - PHPでデータベースに接続するときのまとめ


http://qiita.com/mpyw/items/b00b72c5c95aac573b71

>> 文字セット指定の方法を誤っている
>>
>> 文字セット指定すらしていない場合は論外。日本人ならマルチバイト文字を想定して当然。

に該当していませんか?
    • good
    • 0
この回答へのお礼

回答ありがとうござます。

お礼日時:2014/05/25 14:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qiphoneのメールの文字化けについて

auのiphoneを使ってます。SoftBankのiphoneの友人から来るメールがよく文字化けして困ってます。それもきまってメールの後半だけ文字化けになります。
こちらから送るメールは文字化けしないし、他の友人の時も文字化けしたことがありません。

なんでなのかと考えると気持ちわるかったり、もしかしてウイルスとかで監視されてるの?とか思ったりして心配です。

詳しい方がいたらぜひ教えて下さい。よろしくお願いします。。

Aベストアンサー

@softbank.ne.jpか@i.softbank.jpかは解りませんが、
@i.softbank.jpの場合、
ソフトバンクiphoneからauiphoneの送信の場合、絵文字や特殊文字などで文字コードが変わってしまいサーバー変換の際に文字化けが起こる事が有ります。
参考
→http://d.hatena.ne.jp/NAOI/20120516/1337145807
→http://d.hatena.ne.jp/NAOI/20130618/1371536012
なので、絵文字や特殊文字を使わないか、署名か本文最後に(白抜きハート)か(「⌘」コマンド)を入れると良い様です。(黒塗りハートはアウト)

QPHPのSJISからUTF-8への変換で文字化け

いつもお世話になります。
PC用システムがあり、一部データを携帯電話からも更新したいと思い、既に稼働しているUTF-8のシステムに機能追加しています。
携帯はSJISのみとの事ですので、SJISで携帯用サイトを作成し、DBからデータの読込、表示など問題なくできるようになりました。

携帯サイトでHTMLフォームを作成しており、そこからDBへ書き込む際に、判る範囲ですが以下の文字が文字化けして登録されてしまいます。。

予→浴
ソ→メ

他にも文字化けしそうな感じなのですが、なぜ上記の特定文字だけ文字化けするのでしょうか・・・?
例えば
大阪
東京
名古屋
アップル
などは一切文字化けせず問題ありません。

PHP自体はSJISで作成しており、DB登録時にmb_convert_encoding($txt,"UTF-8","SJIS")でUTF-8としています。


どなたかお詳しい方、ご教授のほど宜しくお願い致します<(_ _)>

Aベストアンサー

ご参考。
http://ja.wikipedia.org/wiki/Shift_JIS#2.E3.83.90.E3.82.A4.E3.83.88.E7.9B.AE.E3.81.8C5C.E7.AD.89.E3.81.AB.E3.81.AA.E3.82.8A.E3.81.86.E3.82.8B.E3.81.93.E3.81.A8.E3.81.AB.E3.82.88.E3.82.8B.E5.95.8F.E9.A1.8C

>既に稼働しているUTF-8のシステムに機能追加しています。
>携帯はSJISのみとの事ですので

だったら「入力を受け取った瞬間に、SJISからUTF-8に変換すべき」です。

>DB登録時にmb_convert_encoding($txt,"UTF-8","SJIS")でUTF-8としています。

このタイミングだと「既に手遅れ」です。DB登録前の段階で「SJISである事が想定されてない」ですから。

「UTF-8のシステム」ってのは「入力の段階で、入力がSJISである事を想定してないシステム」って意味です。

なので「入力を受け取った瞬間に、SJISからUTF-8に変換」して、想定外のデータを入力から流し込まないようにしなければなりません。

>PHP自体はSJISで作成しており

「PHP自体の文字コード」と「入力の文字コード」には、なんの関連もありません。

PHP自体が何語で書かれていようが「入力そのものがUTF-8しか想定してない」なら「入力直後に入力データをUTF-8に変換する」必要があります。

ご参考。
http://ja.wikipedia.org/wiki/Shift_JIS#2.E3.83.90.E3.82.A4.E3.83.88.E7.9B.AE.E3.81.8C5C.E7.AD.89.E3.81.AB.E3.81.AA.E3.82.8A.E3.81.86.E3.82.8B.E3.81.93.E3.81.A8.E3.81.AB.E3.82.88.E3.82.8B.E5.95.8F.E9.A1.8C

>既に稼働しているUTF-8のシステムに機能追加しています。
>携帯はSJISのみとの事ですので

だったら「入力を受け取った瞬間に、SJISからUTF-8に変換すべき」です。

>DB登録時にmb_convert_encoding($txt,"UTF-8","SJIS")でUTF-8としています。

このタイミングだと「既に手遅れ...続きを読む

QiPhoneでZip解凍すると文字化けします

iPhoneでiFilesというアプリを使用しているのですが。
Windowsで圧縮したZipファイルを転送して解凍すると
日本語のファイル名が文字化けしてしまいます。

iFilesで文字化けしない方法はないでしょうか?
又は似た様なアプリで文字化けしないでZipを解凍できるものはありませんでしょうか?

Aベストアンサー

有料アプリですが
PocketFiler
というアプリで文字化けせず解凍できます。
http://itunes.apple.com/jp/app/pocketfiler/id478746971?mt=8

文字コードは自動認識ですので
Unixで圧縮してもWindowsで圧縮しても大丈夫です。

自分はMacOSXにVM WareでUnixとXPを入れて使用してますが
どれからも大丈夫でした。

OpenINに対応してるので、解凍した後他のアプリでファイルを見ることもできます。

参考URL:http://itunes.apple.com/jp/app/pocketfiler/id478746971?mt=8

Qmysql utf8、php・euc-jp で出力すると、[~]が文字化けする

タイトルの通りです。
mysqlの文字コードはutf8なのですが、phpはeucで出力しています。
DBに格納されている文字は文字化けせずに、きちんと表示されているのですが、出力すると「~」が「?」に化けて表示されてしまいます。

mysql_query(”SETNAMES ujis″);

mb_language("Japanese");
mb_internal_encoding("EUC-JP");
mb_http_input("auto");
mb_http_output("EUC-JP");
等も記述しておりますが、どうしても化けてしまいます。

回避方法等ご存知の方がおられましたら、ご教授お願いいたします。

Aベストアンサー

処理系にWindowsが混入してるとそういう現象が起こるらしいですね。
Windowsが波ダッシュと全角チルダを混同してることと、euc-jpには全角
チルダなんて無いことが諸悪の根源とか。

> DBに格納されている文字は文字化けせずに、
UNICODE対応環境で見ても区別付きませんよ。見た目一緒だから。

どこかで全角チルダを波ダッシュに変換してやる必要があるわけですが、
適切な場所でeuc-jpのかわりにeuc-jp-winと唱えるのが効くって噂です。

参考URL:http://kaede.to/~canada/doc/ococaeo

QiPhoneの文字化け問題は解消されたのでしょうか?

ネットニュースを閲覧していたらauがiPhoneからの
メールを受信した場合の文字化けが解消されるという主旨のトピックが
あったのですが、何かと問題視されていた以下の点は解消されると
考えていいのでしょうか?
記事はコチラです↓
http://japan.internet.com/allnet/20081021/6.html

・iPhone側がPCメール扱いのために国産携帯から受信拒否されていた点
・国産携帯がiPhoneからメール受信した場合に文字化けしていた点
・逆にiPhoneが国産携帯からメール受信した場合に文字化けしていた点

乱文申し訳ありません。
ご存知の方がいらっしゃいましたらご回答お願い致します。

Aベストアンサー

>何かと問題視されていた以下の点は解消されると
>考えていいのでしょうか?

大筋では良いと思います。

1)
・iPhone側がPCメール扱いのために国産携帯から受信拒否されていた点

解決されるでしょう。


2)
・国産携帯がiPhoneからメール受信した場合に文字化けしていた点

国産携帯というかauですね。現在iPhoneはUnicode文字が入るとUTF-8で送信なので、対応していないauでは文字化けとなりました。今回の対応で問題なくなると思います。


3)
・逆にiPhoneが国産携帯からメール受信した場合に文字化けしていた点

au携帯からの送信された機種依存文字入りのメールがiPhoneに届いた時、機種依存文字以外の部分もすべて文字化けしてしまうのが問題でした。これはiPhone側の問題だと思うのでiPhone OSのアップデート待ちとなるかもしれません。auからの送信時に機種依存文字入りはUTF-8となるなどとなっていた場合、もしかしたら機種依存文字部分だけ文字化けするとなるかもしれませんが。


もしも購入をお考えでしたら、1)の件でdocomoが対応予定の11/20以降に再度情報収集が安全だと思います。機種依存文字入りメールに引用返信した場合にどうなるのかなど、もしかしたら良くも悪くも思いもよらない結果があるかもしれないので。

>何かと問題視されていた以下の点は解消されると
>考えていいのでしょうか?

大筋では良いと思います。

1)
・iPhone側がPCメール扱いのために国産携帯から受信拒否されていた点

解決されるでしょう。


2)
・国産携帯がiPhoneからメール受信した場合に文字化けしていた点

国産携帯というかauですね。現在iPhoneはUnicode文字が入るとUTF-8で送信なので、対応していないauでは文字化けとなりました。今回の対応で問題なくなると思います。


3)
・逆にiPhoneが国産携帯からメール受信し...続きを読む

QPHP(UTF-8)で作ったフォームで、メールが文字化けします。

PHPで問合せフォームを作っていて、最初は文字コードが”EUC”でうまく動作していました。ところが、サーバを変えたら文字化けしてしまい、問い合わせたところ”UTF-8”に変えてくださいと言われました。

単純に”EUC”だったところを”UTF-8”に修正したら、HP上の表示は直ったのですが、送信されるメールが文字化けしたままなのです。(「?????」という感じで)

mb_language("uni"); 
を入れたらいいのだろうというとこまでは辿り着いたのですが、どこに入れてもうまくいかず・・・。
http://www.infinity-dimensions.com/blog/archives/000114.html
もともと私が作ったプログラムではなく、PHPの知識がないため困っています。

自分なりに調べて、いろいろ試してもわかりませんでした。
助けていただける方がいらっしゃいましたら、よろしくお願いいたします。

-------------(現在のソースです)-------------
<?php
foreach($_POST as $key => $val){
if(is_array($val)){
continue;
}
$val = mb_convert_kana($val, "KVas","UTF-8");
$val = trim($val);
$val = stripslashes($val);
$val = htmlspecialchars($val);
$_POST[$key] = $val;
}
?>
<form method="post" action="<?php print($_SERVER["PHP_SELF"]); ?>">

PHPで問合せフォームを作っていて、最初は文字コードが”EUC”でうまく動作していました。ところが、サーバを変えたら文字化けしてしまい、問い合わせたところ”UTF-8”に変えてくださいと言われました。

単純に”EUC”だったところを”UTF-8”に修正したら、HP上の表示は直ったのですが、送信されるメールが文字化けしたままなのです。(「?????」という感じで)

mb_language("uni"); 
を入れたらいいのだろうというとこまでは辿り着いたのですが、どこに入れてもうまくいかず・・・。
http://www.infinity-dime...続きを読む

Aベストアンサー

mb_language('Japanese');
mb_internal_encoding("UTF-8");
を一番最初に入れてみてください。
mb_send_mail関数を使った環境では文字化けせずに送信できます。
彼方のソースでは未確認です。

Qau iPhone4S メール 文字化け

ソフトバンクのiPhone 4S 64GB White(OS: iOS5.0.1)のメールをauのiPhone 4S 64GB White(OS: iOS5.0.1)で受信すると文字化けします。
ソフトバンク、auともにOSがiOS5.0.0のときは特に何も問題なかったのですが、両社のiPhoneのOSをアップグレードしてから文字化けの問題が発生するようになりました、他の機種では何も問題が出ていないのですが、このような問題を解決する方法をどなたかご存知ないでしょうか。

Aベストアンサー

質問者さんのおっしゃる"文字化け"とは、絵文字等を一切含まない純粋な文字のみがと言うことでしょうか?症状の詳細情報が少ないので、私と同じ症状であるかわかりません。ですが問題が発生している際に私の検索に引っかかっていた質問ページなので、もしお役に立てるようであればと思い記載させて頂きます。

私も同じくSBのiPhone 4SとauのiPhone 4Sの間で問題が発生していました。
(メールのキャッチボールの際、au側の表示が化ける形で、SBは化けずに通常通り)

症状としては、絵文字等を利用しない文字だけのメールのやりとりで、"送信者なし・件名なし・utf-8やiso-2020-jpなど内側のヘッダ情報(10行程度)が表に出てくる"といった内容でした。また本文は、改行をしないような単文であればそれらの羅列したヘッダ情報の下で一行空いて入力した読める本文。改行をしている少しでも長めの文章となると、それらも一行空いた下に単文と同じ位置に大・小文字アルファベットと数字の組み合わせで、完全に読めない形に化けてしまいました。

しかしながら、それらの問題は新規作成でメールを送信する際には発生せず、届いたメールを返信という形で送り返す時のみの症状でした。(iPhoneが販売開始して間もない頃の絵文字変換に対してキャリア間での不具合に似ています)
私もiOS5.0.1のアップデート後の発症でしたので、SBかauのサーバーとiOS5.0.1のかみ合いの不良を疑いましたが、他でそういった事例は無いということから、やはり自分のメールデータが返信時に経由するどこかで起こっている問題だという結論に至りました。

そこでとりあえず、iPhone 4Sを初期化→復元で改善しないか試すことにしました。
しかし、何かと復元は面倒なので行う前にiPhone 3GSとiPad 2を所有していたことから、この2機でも検証してからにしようと新規送信・返信の2パターンでメールを送信してみたところ、やはり返信時のみ化けが生じます。これで機種に対してではなくメールサーバー経由時においての問題ではないかという考えがより強くなります。
(全てiOS5.0.1でしたので、かみ合いの悪さ案も依然として解決してませんが、世間では問題となっていないのでそこは予測です...)

ここで解決策なのですが、結果的には受信→返信→受信→返信→...とメールのキャッチボールを返信で行っていたことに原因があるようです。確証は得られていませんが、"ホーム>設定>メール/連絡先/カレンダー>スレッドにまとめる"をONにしている場合、i.softbankでE-mailの方のメーラーは上記の受信→返信→...のキャッチボールを数十回行うと、(スレッドにまとまり使用しやすい反面)裏でキャッシュがたまってくるようで、それらが悪さをして"文字化け"を引き起こすようです。

したがって、ある程度のキャッチボールを行ったら、仕切り直しの新規作成でメールを送信。という形が現状での回避方法になるのではと思います。(ちなみに私も改善してから日が浅いので"スレッドにまとめる"をOFFにしていれば、受信→返信→...を繰り返してもキャッシュがたまらないのか、それでも溜まってしまうのかの検証はできておりません)

私は大量にメールのやりとりをしている訳ではなかったので、偶然iOS5.0.1の直後辺りで徐々にメールが蓄積しバグが発生しました。質問者さんもiPhone 4S間ということで、同じような量を返信という形でメールのやり取りをしていれば、頃合いがOSアップデートの時期に私と同じように重なると思いますので、もしかしたら同じ症状なのでは?と思っております。

3GS使用時ではこのような症状はありませんでしたので、もしかしたらiOS5.0.1とサーバーのかみ合いが悪いのかもしれません。(そもそもこれらの間でかみ合う部分は無いのかもしれません。専門知識は無いので適当に書いています)もしくは、ここまでメールのやり取りを積み重ねたことがなく、今回偶発したのかもしれません。

SoftBankでしたらメーッセージでのやりとりも解決策かもしれません。
とても長く書き込みしてしまいましたが、私がネットで検索している際にヒットする記事が無くとても困っていたので、もし他にお困りの方がいれば参考になるかと思い詳細までかかせて頂きました。

全く別の症状で、解決に至らなければすみません。

質問者さんのおっしゃる"文字化け"とは、絵文字等を一切含まない純粋な文字のみがと言うことでしょうか?症状の詳細情報が少ないので、私と同じ症状であるかわかりません。ですが問題が発生している際に私の検索に引っかかっていた質問ページなので、もしお役に立てるようであればと思い記載させて頂きます。

私も同じくSBのiPhone 4SとauのiPhone 4Sの間で問題が発生していました。
(メールのキャッチボールの際、au側の表示が化ける形で、SBは化けずに通常通り)

症状としては、絵文字等を利用しない文字だけの...続きを読む

QUTF8のPHPコードから日本語をINSERTするとphpMyAdmin上で文字化けしてしまう

・WindowsXP(SP2)IIS5.1
・PHP 5.2.5 Win32
・MySQL 5.1.22 RC Win32
・phpMyAdmin 2.11.4

多言語(日本語と中国語)を扱える簡単なシステムを試作しているのですが、
test1.php(UFT8-BOM無し)からINSERTしたレコードをphpMyAdminから閲覧
すると日本語が「&egrave;&sup2;&iexcl;&aring;›&pound;&aelig;&sup3;•&auml;&ordm;&ordm;&aelig;」などと文字化けしまくっています。

test2.phpからSELECTすると、まったく文字化けなく呼び出せます。
また、phpMyAdminから直接INSERTしたレコードば文字化けしません。

当初、MySQL4.1.22-win32や、phpMyAdmin 2.8.2.4だったので、
冒頭の最新バージョンにしたりもしてみましたがだめでした。

過去ログや、Webで昨日さんざん調べてみて、確認したのは以下の設定です。

(1) C:\Program Files\MySQL\MySQL Server 5.1\my.ini:
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8

(2) C:\Inetpub\wwwroot\phpMyAdmin\libraries\config.default.php
$cfg['DefaultLang'] = 'utf-8';
$cfg['DefaultConnectionCollation'] = 'utf8_general_ci';
$cfg['DefaultCharset'] = 'utf-8';


(3) MySQL Server Instance Config Wizard
UTF8を選択しました(MySQL の文字セット: UTF-8 Unicode (utf8))
MySQL 接続照合順序 utf8_general_ci

・WindowsXP(SP2)IIS5.1
・PHP 5.2.5 Win32
・MySQL 5.1.22 RC Win32
・phpMyAdmin 2.11.4

多言語(日本語と中国語)を扱える簡単なシステムを試作しているのですが、
test1.php(UFT8-BOM無し)からINSERTしたレコードをphpMyAdminから閲覧
すると日本語が「&egrave;&sup2;&iexcl;&aring;›&pound;&aelig;&sup3;•&auml;&ordm;&ordm;&aelig;」などと文字化けしまくっています。

test2.phpからSELECTすると、まったく文字化けなく呼び出せます。
また、phpMyAdminから直接INSERTしたレコードば文字化け...続きを読む

Aベストアンサー

phpからinsertして、phpでちゃんと呼び出せるということはphpとMySQLの間で文字コードの変換が行われてしまっていると推測されます。

insertやselectの前に

   $sql = 'set names utf-8';
   mysql_query($sql);

は挿入されていますよね?(お忘れではないと思いますが念のため・・)

QiPhoneのミュージックアプリで歌詞が文字化け

今までは普通に歌詞を表示できていました。iTunes上ではなく音楽ファイルをおいているフォルダ上でアルバム名を変更した後、iTunes上ではアルバム名が変わらなかったのでその一曲一曲をiTunes上で再生したら、iPhone上のそれらの曲の歌詞が文字化けするようになりました(アルバム名はきちんと変更されました)。 iTunesでみると文字化けしていません。また英語歌詞も文字化けしていません。

個人的に調べて、
「ID3タグを変換→Unicodeを元に戻す」をやってみましたが何も変わりませんでした。
「ID3タグバージョンをなし→歌詞を再入力→iPhone上からその曲を消す→同期」でようやく文字化けは解消されました。

しかし、この方法では大変時間がかかり、次また文字化けが起こった時にこの操作を繰り返す気力はなさそうです。
もっと簡単に修正できる方法を教えてください。

文字コードの問題でしょうか。

また、なぜ急に文字化けが起こったのか分かるようでしたらその原因も教えてください。

マイナーな曲が多いので、歌詞は手打ちしています。歌詞のテキストはバックアップを取ってあります。

今までは普通に歌詞を表示できていました。iTunes上ではなく音楽ファイルをおいているフォルダ上でアルバム名を変更した後、iTunes上ではアルバム名が変わらなかったのでその一曲一曲をiTunes上で再生したら、iPhone上のそれらの曲の歌詞が文字化けするようになりました(アルバム名はきちんと変更されました)。 iTunesでみると文字化けしていません。また英語歌詞も文字化けしていません。

個人的に調べて、
「ID3タグを変換→Unicodeを元に戻す」をやってみましたが何も変わりませんでした。
「ID3タグバージョン...続きを読む

Aベストアンサー

>iTunes上ではなく音楽ファイルをおいているフォルダ上でアルバム名を変更した

原因はココなのはご自身でも解っておられると思いますが、そもそもiphone自体がアップル製品なのでWindowsとは互換性が全く有りません。
それをアップルのドライバーとiTunesでどうにか保ってるだけです。
なので、面倒でしょうが変更ごとは全てiTunes上(プロパティ)でやった方が懸命だと思います。またテキストのコピペに関しても気を付けた方が良いのかも知れません。

Qmysql→EUC-JP、php→UTF-8の時の文字コード変換箇所について。

こんにちわ。
現在xreaのサーバーを使っているのですが、私が借りている
サーバーはmysqlの文字コードがEUC-JPで固定されており、
WebページはUTF-8で書いている為、データを取り込む時、
上げる時共に文字化けしています。
色々試行錯誤したのですが、エラーが出てしまいうまくいきません。
そこで、このような環境の時はどの部分で、文字コードの変換処理を
すればいいのでしょうか?
(SQL文で行うべきか、PHP文で行うべきか、それともお互いで処理するべきか。)

サーバー環境は以下です。
Apache1.3.37
PHP5.1.4
MySQL4.0.26
よろしくお願いします。

Aベストアンサー

>という事は、全てPHP上で操作すればいいって事かもしれません。

その解釈でいいです。またutf-8を指定してphpAdminにログインすればphpMyAdminで挿入しても大丈夫です。

(蛇足)
サーバ仕様に依存する話なので、xreaのサポートボードでもよかったですねぇ(苦笑


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報