• 締切済み

『予約』という文字を挿入すると文字化けしてしまいます。

データベースはmySQLで、 コマンドプロンプトからinsert into ~ コマンドを 用いて、予約という文字を挿入すると、その予約という文字自体と、それ以降の 文字列が全て文字化けしてしまいます。 対処法はないのでしょうか? default-character-set=sjis で文字コードの指定は行っています。

みんなの回答

  • paz777
  • ベストアンサー率47% (77/163)
回答No.2

こんにちは。 "\"(円マーク:16進'5c')は#1さんの言われている通りに エスケープシーケンスになります。 "予約"の16進は'975c,96f1'とですので、"予"の字の後ろ が"\"と同じになり、文字化けを起こします。 エスケープシーケンスを文字として認識させるにはエスケ ープシーケンスを2つ連続させる必要があります。 ([']や["]等と扱いは同じです) つまり、"\"を文字として認識させるには"\\"とします。 "予約"の場合には"予"の後ろに"\"を入れ"予\約"(16進'975c,5c,96f1') で、できると思いますが、どうでしょうか? ちなみに、その他の文字では "カ"(x'835c'):カタカナ "(9)"(x'875c') "申"(x'905c') "貼"(x'935c') "能"(x'945c') 等があります。 ではでは・・・

sugoitensai
質問者

補足

1つ1つ丁寧にありがとうございます。 ちなみに入力フィールドより値を入れDBに追加するプログラムを作っているのですが、上記の文字の時、後ろに\を入れるようなコーディング法はありますか? 入力チェックはJavaScriptで行っております。 コードではなく説明でよいので、お願いできませんか?

noname#48234
noname#48234
回答No.1

予約の「予」という漢字コード(SHIFT-JIS)の一部がASCIIコードの「\」と同じであるために文字化けが起きてしまうのです。 日本語を扱っているとどうしても起きてしまう問題です。 スクリプト中の「予約」という文字を「\予約」としてエスケープしてみてください。 こういう文字化けしてしまう漢字が40字ほどあります。

sugoitensai
質問者

補足

文字コードの一部が対応していないからなのですね。 Shift-JISでは『予』=『\』ということですか。 あと、エスケープする行い方とはどのように行うのでしょうか? insert into ~ '\予約' とプロンプトから入力しても効果ありませんでした。

関連するQ&A

  • 日本語の文字化け

    perlのCGI,DBIを使ってMysqlにinsertしてますが、日本語が文字化けします。 文字化けした文字列は???となってます。 ちょと、見当がつかないので困ってます。 Mysqlは5.037を使ってます。 設定ファイルの追記は行ってます。 [mysqld] default-character-set=sjis [mysqldump] default-character-set=sjis [mysql] default-character-set=sjis ●SHOW GLOBAL VARIABLES LIKE 'character\_set\_% ↓実行結果 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

    • ベストアンサー
    • 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
  • 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

  • MySQLの文字化け

    Win XP MySQL4.0.13 TOMCAT4.1 APACHE2 以上を使用して自宅にて開発を行っております。 HTMLページより入力されたデータをjspファイルへ渡し、jspファイル内へ記述されたSQL文によりデータベースへの書き込みを試みております。 データベースへの書き込み自体はできるのですが、文字化けで困っています。 書き込み後、プロンプトよりselect文で確認すると、日本語のみ文字化けし、アルファベットは大文字が小文字にところどころなってしまいます。数字は問題ありませんでした。 具体的には「あいうえお」が「BDFHJ」に文字化けしていました。 MySQLのコンソールのMY.ini Setuoタブに [mysqld] default-character-set=sjis [mysql] default-character-set=sjis と指定しており、HTML,jspファイル内でもshift-jisを指定しております。 ご教授よろしくお願いしたします。

    • ベストアンサー
    • MySQL
  • MYSQLの文字化けについて

    MYSQLの文字化けについて質問させてください。 MYSQL COMMAND LINE CLIENTでMYSQLに作ったデータベースに下記のSQL文でデータを入れると、下記のエラーが出ます。 sql 「insert into テーブル名 (id、type)values (1,'男性’);」 エラー文 incorrect string value: '入力文字が文字化けして表示’for column 'type’at row 1 文字化け対策として、調べたところ、下記のように「my.ini」に記述すると言うことでしたので、試してみました。 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 skip-character-set-client-handshake [mysqldump] default-character-set =utf8 ちなみにその他情報です。 MySQLのバージョン MySQL 5.1 MySQLで有効になっている文字コード character_set_client | utf8 character_set_connection | utf8 character_set_database | utf8 character_set_filesystem | binary character_set_results | utf8 character_set_server | utf8 character_set_system | utf8 何かお解かりになることがありましたら、宜しくお願いします。

  • MySQLの文字化け(?)解消について

    こんにちは、MySQLを使ってデータベースの操作をしている初心者です。 開発環境は以下の通りです。 Apache Tomchat 4.1 MySQL server 4.1.7 jdk1.5.0 MySQL Command Line Client 上でテーブルを作成し、select*で表示すると日本語の部分が全て??? や???」???になってしまいます。これってやはり文字化けですか? 過去の投稿から MySQLのフォルダにあったmy.iniに 以下の内容を追加してみましたが結果は 変わりませんでした。 [mysqld] basedir=C:/mysql #bind-address=10.146.133.80 #datadir=C:/mysql/data #language=C:/mysql/share/your language directory #slow query log#= #tmpdir#= #port=3306 #set-variable=key_buffer=16M default-character-set=sjis [WinMySQLadmin] Server=C:/mysql/bin/mysqld-max-nt.exe user=root password=root default-character-set=sjis [mysql] default-character-set=sjis [client] default-character-set=sjis [mysqldump] default-character-set=sjis ちなみにjavaアプリケーションで コマンドプロンプト側からコマンドライン引数 として追加指定した日本語についても全て同じように ????になってしまいます。 (ただコマンドプロンプト上では引数で指定した 値のみ、きれいに日本語で表示されます。) 上記内容を追加した後で何かするべきこと、 もしくは上記内容でおかしなところがあれば 教えてください。

    • ベストアンサー
    • MySQL
  • MYSQLの文字化けについて

    すみません。いまMYSQLでデータベースを構築しているのですが、秀丸で作成した、insert文をコマンドで走らせると 「ERROR 1366 (HY000): Incorrect string value: '\x87u \x82T\x82...' for column 'menseki' at row 1」というエラーが出てしまいます。 表の中身は日本語ですので、秀丸のinsert文がおかしいのかと思い、コマンドで直接打っても同じエラーが出ます。 my.iniやコマンドで「set names sjis;」を打ってみるなど文字コードなどをいろいろいじってみましたが直りません。ちなみに現在の文字設定は、show variables like '%char%';を走らせると +--------------------------+------------------------------+ | Variable_name | Value | +--------------------------+------------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | sjis | | character_set_server | sjis | | character_set_system | utf8 | | character_sets_dir | C:\MYSQL\share\charsets\ +--------------------------+------------------------------+ になります。 どなたかわかる方いましたらご教授ください。 使用環境 OS:winXP mysql5.0.45 php5.25 apache2.26 です。よろしくお願いします。

  • mysqlの文字化けについてです

    学校でjavaの勉強をしている者です。 初心者です。 学校の宿題をやるために、自宅でmysqlをインストールしたのですが、 javaで実行すると文字化けしてしまいます。 学校では、my.iniの中の [mysql] default-character-set=latin1 を [mysql] default-character-set=sjis と変更し、 [mysqld] default-character-set=latin1 を [mysqld] default-character-set=sjis skip-character-set-client-handshake と変更し、 SQLを再起動すれば解決すると習ったのですが、 文字化けが起こってしまいます。 show variables like '%char%'で文字コードを確認してみたところ、 | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | このように、sjisになっていませんでした。 どうしてなんでしょうか? どなたか解答のほどよろしくお願いします。

  • mysql文字化けについて

    mysqlで文字化けしてしまいます +--------------------------+----------------------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | sjis | | character_set_results | sjis | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | D:\App\Dev\xampp\mysql\share\charsets\ | +--------------------------+----------------------------------------+ となっているのですが 文字化けがなおりません どうすれば治るのでしょうか?

  • XAMPPでMySQLで文字化け、文字コード設定について

    MySQLの文字セット: UTF-8 Unicode (utf8)が変更できない。(できればSJISにしたい) 環境: OS:WinXP XAMPP1.6.6 * Apache 2.2.8 + OpenSSL 0.9.8g * MySQL 5.0.51 * PHP 5.2.5 & PHP 4.4.8 (RC2) * phpMyAdmin 2.11.4 症状: コマンドラインから作った全角文字を含む簡易テーブルについて。 ブラウザからphpMyAdminで確認すると文字化けせず読めるが、 DOSからコマンド"select"で確認すると文字化けしてしまう。 DOS窓からコマンド入力で簡単なテーブルsampleを作る。 東京,tokio Kanagawa,kanagawa とうきょう,tokio mysql> select * from sample; +------------+----------+ | ken | kencho | +------------+----------+ | | tokio | | Kanagawa | kanagawa | | ニ、ォ、 | tokio | +------------+----------+ mysql> status Server characterset: sjis Db characterset: sjis Client characterset: sjis Conn. characterset: sjis mysql> show variables like '%char%'; +--------------------------+-----------------------------------+ | Variable_name | Value | +--------------------------+-----------------------------------+ | 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 | | character_sets_dir | _xampp_mysql_share_charsets_ | +--------------------------+-----------------------------------+ character_set_systemだけがutf8なのは何故でしょうか? 編集したファイル: <my.ini(C:\WINDOWS)> [mysqld] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis <my.cnf(C:\xampp\phpMyAdmin)>(短縮ダイヤル) default-character-set=sjis init-connect=SET NAMES sjis <config.inc.php(C:\xampp\phpMyAdmin)> $cfg['DefaultLang'] = 'ja-sjis'; $cfg['Lang'] = 'ja-sjis'; $cfg['DefaultCharset'] = 'ja-sjis'; 結果: とりあえず調べた事をファイルに反映させてみましたが、 DOSプロンプトからselect文を実行すると全角文字が読めません。 どうすれば読めるようになりますか? character_set_system utf8を変更するのでしょうか? "http://www.oji.ath.cx/sb/log/eid11.html"を参考にさせて頂きましたが、character_sets_*の意味がいまいち分かりません。 こちらも分かれば教えて頂きたいと思います。 宜しくお願いします。

    • ベストアンサー
    • MySQL