

テーマと同じです。住所を保存するときは：「ー」という文字は「？」になります

私のMySQLデータベースの文字コードはSJISです。  
JDBCでAテーブルの住所のデータを取り出して、Bテーブルに保存しています。

でも住所を保存するときは：「ー」という文字が「？」になります

例えば：「２丁目２－２９」ならば、保存すると、データベースの中で「２丁目２?２９」になる。

JDBCの接続の設定は下記のようです

[code]

    connection = DriverManager.getConnection("jdbc:mysql://" + LOCALHOST + "/" +
        DEFAUL_DB_NAME + "?useUnicode=true&characterEncoding=SJIS", LOCAL_USER, LOCAL_PASSWORD)
    
[/code]

誰か助けてくれませんか。


CC BY-SA 3.0
2015-11-10T05:53:32.723
18610
2015-11-10T09:24:54.587
2015-11-10T06:19:32.300
13196
question
java mysql encoding
テーブルに住所を登録する際、「ー」という文字が「?」になってしまう


[①②－などの文字をMySQLへ登録する方法を教えてください。](http://www.orquesta.org/takegata/Article/ArticleView.jsp?article_id=571)に類似の問題と解決策までのやりとりがありましたので、参考にできると思います。

WindowsにてMySQLの検証環境を作って試したところ、sjisだと登録時に文字化けを起こしますが、テーブルならびにカラムのcollationをcp932にすることで、登録時も読み出しも文字化けは発生しませんでした。  
（JDBC接続文字列のcharacterEncodingsにはms932を指定します）

MySQLのバージョンならびにJDBCドライバのバージョンは以下で検証しました。

  * MySQL 5.5.34 Community Server 
  * mysql-connector-java 5.1.37

ただしこの手順はテーブルならびにカラムの文字コードを変更することになります。もしデータが登録済みであれば、一度ダンプなどを取ってバックアップをしてからにしてください。

参考になれば幸いです。


CC BY-SA 3.0
2015-11-10T09:24:54.587
18621
2015-11-10T09:24:54.587
5778
18610
answer