• ベストアンサー

「表」の文字入りのレコードがinsertできません

何回も質問して申し訳ありません。 サーバ、クライアントともキャラクタセットはすべてsjisに設定したのですが、「表」の文字入りのレコードをinsertしようとエラーになってしまいます。「表」の0x5Cが問題なのでしょうか。 insert into tb1 values(a '表'); とすると、後ろの'が入力してない扱いになってしまうようです。 insert into tb1 values(a '表/'); とすればうまくいくのですが、 statusで Server characterset: sjis Db characterset: sjis Client characterset: sjis Conn. characterset: sjis となっていても、解決しない問題なのでしょうか。 申し訳ありません。できましたら、どなたかお助けいただければ幸いです。

  • MySQL
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>サーバ、クライアントともキャラクタセットはすべてsjisに設定した というのが問題ですね。 sjisでやる以上、5C問題は一生ついてきますのであきらめてください。 こまめにプログラムでエスケープしてやるしかないでしょう。 sjisはインジェクションにもろいので細心の注意を。

その他の回答 (1)

回答No.1

mysqlのバージョンはいくつでしょうか。 4以降は日本語に問題が多い、 と聞きますが。

kiyonisi
質問者

補足

お世話になります。 select version();とすると 「5.0.41-community-nt」 と出てきました。

関連するQ&A

  • MySQL5.0の文字コードが変更できずに困っています。

    MySQL5.0の文字コードが変更できずに困っています。 環境は全てWindowsXPのローカルで動かしています。 インストール直後、statusコマンドで確認したところ、 Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 となっていました。 次に、C:\Program Files\MySQL\MySQL Server 5.0内のmy.iniを [client] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis [mysqld] default-character-set=sjis としてMySQLを再起動してみたのですが、 Server characterset: latin1 Db characterset: latin1 Client characterset: sjis Conn. characterset: sjis で、ServerとDbが変わらず、このままではINSERT文などで日本語をいれることが出来ません。 どなたかご教示お願いします。

    • ベストアンサー
    • MySQL
  • my.iniの設定について

    Mysql バージョン4.1.7 WINバージョンをインストールしました。 コマンドプロンプトでstatusを見てみると、 Server characterset: latin1 Db characterset: sjis Client characterset: sjis Conn. characterset: latin1 というふうに、文字コードがバラバラになっています。 これをmy.iniですべてsjisに設定しようと思ったので すが、設定する項目がありません。追加しようにもさ っぱり分からない状態です。どなたかご教授下さい。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • ODBC接続で全角文字が文字化け

    MySQL⇒MS-ACCESSのODBC接続で文字化けが発生してます。 ■MySQL 5.0.27 ■MyODBC 3.51.19 ■MS-ACCESS 2000 (Windows2000) ○my.cnfの設定 [mysqld] skip-character-set-client-handshake [mysqld_safe] skip-character-set-client-handshake [ODBC] default-character-set=sjis [client] default-character-set=sjis ○status Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 ▽試したこと ・Initial Statement に set names 'sjis' を設定 ・Character Set sjis、ujis、latin1 それぞれを指定 半角文字は大丈夫ですが、全角文字になると「??????????」と表示されています。 MySQL+PHPでは問題なく使えます。 解決方法分かる方アドバイスお願い致します。

    • ベストアンサー
    • MySQL
  • MySQL文字化け「表」について

    1.DBの設定。 [mysqld] default-character-set = utf8 skip-character-set-client-handshake [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 2.コマンドプロンプトより接続(musqldがUTF設定のため、SJIS変換) SET NAMES SJIS; 3.表の作成 create table table1( id int, name varchar); 4.表に追加 INSERT INTO table1(item,name) VALUES("1","表"); INSERT INTO table1(item,name) VALUES('1','表'); ⇒どちらのSQL分でもDBには、表 という文字がNullで格納されます。  (1 は格納されています。) 質問1 "表"はSJISで文字化け?するというのをどこかで見た覚えがあるのですが '表'でもInsはできないものなのでしょうか。 "であろうと'であろうと、表は SJIS環境ではエラーになるのでしょうか。 質問2 このままでは、コマンドプロンプトから文字化けする?ため 「表」という文字を含むInsert検証ができません・・・。 コマンドプロンプト以外で、ターミナルに使えるツールがあれば ご教授お願いします。(phpMyAdminも除外でお願いします。)

    • ベストアンサー
    • MySQL
  • MySQLで日本語を出力すると文字化け(?)します。

    初めまして、MySQLの日本語の取り扱いについて悩んでいます。 この手の質問の過去ログをいろいろ漁ってみて、試してみたのですが、 やり方が悪いのか解決には至りませんでしたので質問させていただきます。 MySQLのバージョンは5.0で、phpMyAdminは2.9です。また、PHPのバージョンは5.1です。 OSはWindwos XPです。 status等で文字コードを確認したところ、以下のようでした。 Server characterset : sjis Db characterset : sjis Client characterset : sjis Conn.characterset : sjis また、phpMyAdminの「MySQLの文字セット」にはUTF-8 Unicode (utf8) とあります(この時点で十分謎です;;)。 このような環境で、以下のようなテーブルを作成し、ブラウザに「日本語。」と出力してみたところ、????と出ました。 どなたかのご教授を得られれば幸いです。 よろしくお願いします。

  • MySQL4.1における文字化けについて

    WindowsXPにてMySQL4.1.12aをインストールしました。 JDBCにて、 Class.forName("com.mysql.jdbc.Driver").newInstance(); String connStr = "jdbc:mysql:///databasename?user=root&password=pass" + "&useUnicode=true&characterEncoding=Shift_JIS"; とし、insertでCSVファイルから特定の項目を追加していくということをしました。 clientにてselectしてみたら、2バイト文字がすべて 「?」に変わっていました。 my.iniにて [mysqld] default-character-set = sjis [client] default-character-set = sjis [mysql] default-character-set = sjis を追加していますが、 statusで見ると mysql> status -------------- mysql Ver 14.7 Distrib 4.1.12a, for Win32 (ia32) Connection id: 1 Current database: shop Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 4.1.12a-nt Protocol version: 10 Connection: localhost via TCP/IP Server characterset: sjis Db characterset: utf8 Client characterset: latin1 Conn. characterset: latin1 TCP port: 3306 Uptime: 30 sec となっています。 utf8、latin1というのが文字化けの原因でしょうか。 対策方法をご教授お願いいたします。

    • ベストアンサー
    • MySQL
  • mysqlの文字コードの変更方法について教えてください。

    /etc/my.cnfの[mysqld]と[mysql]にdefault-character-set = utf8を 追記したのですが、statusで確認すると Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 とサーバー側の文字コードが変更できていません。 ネットや本で調べてみたのですがわからず、困っております。 どなたか分かる方よろしくお願いいたします。

  • my.iniを書き換えても文字化けが解消されません。

    MySQL5.1をWindowsVistaにインストールし、コマンドプロンプト上で実行しているのですが、日本語の文字化けが解消されません。 自分なりに調べ、下記ののように設定しましたが手詰まりになってしまいましたので、どなたか知恵を貸してください。 my.iniを以下のように変更 [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis [mysqld] default-character-set=sjis character_set_server=sjis skip-character-set-client-handshake 起動時のステータス mysql> status; Server characterset: sjis Db characterset: sjis Client characterset: sjis Conn. characterset: sjis mysql> show variables like "char%"; character_set_client sjis character_set_connection sjis character_set_database sjis character_set_filesystem binary character_set_results sjis character_set_server sjis character_set_system utf8 コマンドプロンプトの文字コード Shift-JIS

  • DBD::mysqlで「表」という文字をテーブルへインサートしたい

    お世話になります。 環境は windows2000pro perl 5.8.8 mysql 5.0.22 です。 mysqlの文字コード関連の設定はmy.iniにてsjisに統一してあります。 DBIを使って、perlスクリプトからmysqlのテーブルへ「表」という文字をインサートしようとするとエラーになります。mysqlクライアントからならちゃんと「表」もインサートできました。 エラーは以下のようになっています。 「 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表 」 とにかくインサートしようとする文字列の最後の文字が「表」なら同様のエラーになります。 「表示」なら問題なくインサートできます。表の2バイト目が5cなのがまずいと思うのですが、どう対処すればよいかわかりません。 ヒントを下さい。よろしくお願いします。 ----- use strict; use DBI; use Encode qw(from_to); my $str = "表"; from_to($str,'utf8','shiftjis'); eval { my $dbh = DBI->connect( 'dbi:mysql:test,hostname=localhost', 'root','bnogl399',{ RaiseError => 1, PrintError => 0}); $dbh->do("set names sjis"); $dbh->do("use mydb"); $dbh->do("insert into foo values (3, " . $dbh->quote($str) . ")"); $dbh->disconnect(); }; print $DBI::errstr if $@;

  • MYSQL insertについて

    MYSQLについて MYSQLで insert into syouhin values(3,'ブラックコーヒー',120) で実行するとうまく入力されません charsetもsjisでしてますし、なにがいけないのでしょうか??おしえてくださいお願いします。

    • ベストアンサー
    • MySQL