クライアントの文字コードをsjisにした状態で
aというテーブルに、機種依存文字「キロ」を以下のようなクエリでいれようとした場合。
insert into a values("キロ") ;
サーバ側の文字コードがUTF-8では、以下のようなエラーが出てインサートできません。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '"?")'
at line 1
サーバ側の文字コードをsjisにした場合は、上記のようなエラーは出ずにインサートできるのですが、文字化けします。
機種依存文字、特殊文字をデータベースで扱うにはどうするのが一般的なのでしょうか?
No.1ベストアンサー
- 回答日時:
私はPHPもSQLも勉強し始めてまだ数ヶ月です。
この為、SQLの常識をよく判らず、UTF-8で作ったデータベースにSJISのデータを格納した結果ソートが変になる等の不具合が発生した経験があるのですが…
前置きが長くなりましたが、その際に(文字コードの問題と気づかないまま)解決する為に取った手段が流用出来そうなので紹介します。
・URLエンコードして、エンコードをデータベースに格納する。
つまり、「あ」という文字をデータベースに入れるのではなく、『%82%a0』とコード化した文字列をデータベースに入れます。
利点:
・PHPの文字コードだけ意識すれば操作できる。(=DBの文字コードを無視出来る)
・特殊文字や機種依存文字も %+16進数 で表すので問題なく利用出来る。
・ユーザー入力を格納する場合でも、エンコードしてからデータベースに渡すので、セキュリティ上優位。
欠点:
・全ての操作において一々エンコード・デコードが必要になる。
・データが3倍の6バイト(SJISの場合)になる。
と、サーバーの負担が増加しますが、小規模のデータベースなら活用出来ると思います。
なお、最初に書いたようにPHP・SQLとも勉強を始めて数ヶ月(かつ独学+教材=ウェブ)ですので、一般的な方法は分かりません(^^;
No.2
- 回答日時:
試していませんが、クライアントのエンコーディングにcp932を指定したら大丈夫だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- 英語 英文の添削お願いします。【長文です。】 マッチングアプリで相手を言い負かしている時のやつです。 色々 1 2023/07/01 02:12
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(SNS・コミュニケーションサービス) 爆サイやっていたら、下のような文字が出ました! これは何なのでしょうか? nginx error! 1 2023/06/09 12:27
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- 英語 The Twilight Zone1959に関するCBSの回答について 1 2023/03/02 15:13
- 英語 英文について教えて下さい。 2 2022/06/14 10:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
html上でMySQLにアクセス(Java...
-
htmlタグを含んだ文字のデータ...
-
あるDBから別のDBのテーブルをs...
-
MySQL4.1以上で、機種依存文字...
-
SQLServerのselect文でデータ数...
-
データベースに配列を格納する
-
どの程度のデータベースなら、c...
-
データベースのパンク
-
Amazon.comの「MARC」データベ...
-
mysql データベースを別のサー...
-
バッチファイルではパスワード...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
PL/SQLをWindowsのBATファイル...
-
同じSQL文で極端に検索が遅くな...
-
作成したレコードセットのCSV出...
-
sql*loader 数値のロード
-
comment on columnについてわか...
-
batでsqlplusによる前月データ...
-
badファイルの内容を知る方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
SQLServerのselect文でデータ数...
-
mySQLのデータベースにhtmlのコ...
-
バッチファイルではパスワード...
-
Mysqlのデータベースのリンク
-
ユーザにインフォメーション ス...
-
どの程度のデータベースなら、c...
-
mysqlデータベース内のuserテー...
-
データベースに画像を入れた場...
-
データベースの複製の仕方(mysql)
-
phpmyAdminでmySQLのdumpデータ...
-
htmlタグを含んだ文字のデータ...
-
MySQL4.1以上で、機種依存文字...
-
ロータスアプローチでデータ連...
-
作ったはずのDBがphpMyAdminで...
-
私の考えていることは ・mySQL ...
-
データベースに配列を格納する
-
レンタルサーバでのデータベー...
-
データベースの検索で、この場...
-
MySQL4.1系でPHPが文字化けして...
おすすめ情報