既出の問題だと思うのですが、WindowsServer(2012)上で動作するphp+mysqlで全角ハイフン文字が「?」に化けてしまう現象で困っています。
全くの素人が試行錯誤の状態で作ったアプリなので、mysql(V5.5)のテーブルはsjis、php(5.4)スクリプト自体もsjisで書いています。また環境変数は下記の通りです。
mysql>show variables like 'chara%'
character_set_client | cp932
character_set_connection | cp932
character_set_database | utf8
character_set_filesystem | binary
character_set_results | cp932
character_set_server | cp932
character_set_system | utf8
テーブルAに入っている値を照会して、選択した結果を上書きするケースもあるため、別のテーブルBに書き込む処理を行っており、テーブルB上には、化けた文字とそれを画面上で修正した文字が混在する困った状態になっています。
まずは、テーブルAを照会する時点で、文字化けをしない状態にし、文字化けをしている状態のテーブルBの値を更新する必要があると思うのですが、まずは前者から対処したいと思います。
対処方法として、化けた文字を$strとすると、
$str=mb_convert_encoding(mb_convert_encoding($str, 'sjis-win', 'auto'), 'UTF-8', 'sjis-win');
とか、
$str=mb_convert_encoding($str, mb_internal_encoding(), 'SJIS-WIN');
とか試してみましたが、全ての文字が化けてしまう状態です。
対処方法がありましたらよろしくお願い申し上げます。
No.5ベストアンサー
- 回答日時:
ああ、任意の文字で試すことは出来ない状況でしたか。
しかし問題ありません。ハイフン(あるいはダッシュ?)「―」は0x5CかMS932かどちらの問題かわかりませんでしたが、全角マイナス(Unicode的には全角ハイフンマイナス)「-」なら確実にCP932の問題です。
参考: http://www.m-bsys.com/character-code/java-sjis
phpやSQLには詳しくないので具体的な対処法は分かりませんが、(正式な)Shift_JISとCP932が入り混じって使われているのでしょう。
コメント有難うございました。
お礼が遅れて失礼しました。
使っている文字が-(ハイフン)だと思っていても、実際はマイナス文字であるがために変換できないということですね。
確かに、キーボードで0の右にある-の文字を入れて全角変換するとマイナスの文字コードが入ります。
仕方ないので、この文字が入ってしまった場合、半角のハイフンに置き換えることにしました。同じやり方で旧漢字は新漢字に置き換えましたが、根本的な解決ではないことは判っていますが、当面この方法で切り抜けることにしました。
No.4
- 回答日時:
> 全角ハイフンが最も使われている文字というだけで
そうでしたか。
> 髙とか崎の旧字体
それは問題ありません(全角ハイフンが化けるのとは別の問題です。)
私が気になっているのは「ソ」「噂」「£」「~」が化けるか否かです。
「ソ」と「噂」が化けるなら問題は0x5C、「£」と「~」が化けるなら問題はCP932で、対処が全く変わってくるので重要なのです。
そして全角ハイフンとはShift_JISで815Cの文字のことですか?
さらに言えば、UnicodeでU+2015ですか? U+2014ですか?
コメント有難うございます。
「ソ」は化けていませんでした。他の文字が使われていないので今のところ判りません。
ただ判ったことは、全角ハイフンと言っていたのは、お恥ずかしながら、全角マイナス(SJIS:817C,Unicode:FF0d)でした。半角のハイフンを入れてF9で全角に変換すると、全角マイナスが出てきてしまうので、これを使って登録していました。登録自体にも問題があるかもしれません。
No.3
- 回答日時:
確認ですが、
全角ハイフンとはShift_JISで815Cの文字のことですか?
「ソ」や「噂」も化けますか?
「£」や「~」は化けませんか?
コメント有難うございます。
全角ハイフンが最も使われている文字というだけで、それ以外の特殊漢字も化けています。髙とか崎の旧字体というのでしょか、機種依存文字もこの区画に含まれる文字も化けています。
No.2
- 回答日時:
>変えるのは難しいんです。
まぁそれも選択肢の一つでしょうね。だましだまし運用してください。
ただしつこいようですが、sjisでやる限り治る見込はありません。
mysqlを始めるときに一番最初にいわれる一番大事な約束が
「shiftjisだけはやめておけ」です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
SQLの検索について
-
2つのカラムでgroup by の動作...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
utf8bomとutf8mb4の違いがいま...
-
「総降水量が100mm以上になる...
-
SQLで漢字名称を都道府県や市区...
-
SQLあってますか?こう?
-
SQL構文です 画像のようにした...
-
SELECT * FROM `生徒名簿` INNE...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
like句を使って日本語を検索す...
-
my.cnf と my.ini の違い
-
エクセルで連勤チェックをした...
-
ODBC接続で全角文字が文字化け
-
windows上のphpにおける全角ハ...
-
MySQL4.1.11の漢字がAccessで文...
-
MySQL Connector C++について
-
phpMyAdminのデフォルトのLangu...
-
phpMyAdminにおけるSJISモード...
-
XAMPPでMySQLで文字化け、文字...
-
Mysqlで外部から接続できない。
-
Mysql移行後の文字化け
-
文字化け中。
-
netscreen remoteに関して
-
PHPを使用してMySQLを...
-
XAMPPでsjisを使いたいのですが
-
Mysqlで文字化けします
-
MySQLからACCESSにリンクすると...
-
レプリケーションがうまくいき...
-
Shift-JIS文字化けについて
おすすめ情報