Q96:バックスラッシュがMySQLで読み込むと全角になる
Q96-1:
MYSQLで登録したデータを読み込むと、半角で C:\Users\user\Documents\1.jpg で登録したのに
C:\Users\user\Documents\1.jpg と表示されます。
\ のままで表示させたいのですが、ご指導宜しくお願い致します。
関連ファイル1:Book1.xls
A96-1:
Unicodeでは「\(半角)」が日本語フォントでは「\」で見えているので、[テキストフィールド]や[テーブル]のフォントを日本語フォント、例えば「MSゴシック」に変更してご確認下さい。
MySQLのテーブルをsjis以外で作っていらっしゃるのかと存じますが、テーブルの文字コードがsjisの場合「¥」がエスケープ文字として認識される場合がありますので、ご留意下さい。
Q96-2:
MySQLのテーブルをsjisで作成しております。MSゴジック等にしてもやはり全角のままです。
C:\Users\user\Documents\1.jpgのままです。
A96-2:
大変お手数ですが、以下の点をご確認頂けないでしょうか。
@MySQLのコマンドラインでデータを取得した時にも、全角バックスラッシュになっているでしょうか。それとも「\」のままでしょうか。
AMySQLコマンドライン、MZPlatform双方から(違いはないかも知れませんが)
「SHOW VARIABLES LIKE 'char%'」を実行し、結果をお知らせ下さい。
「character_set_client」等の設定が取得できます。
Bこちらでも検証したいので、お使いのMySQLのバージョンをマイナーバージョンまでお教え下さい。
C 「C:\Users\user\Documents\1.jpg」等のデータをMySQLに登録する際に、どのような処理方法で登録しているでしょうか。
・[テキストフィールド]のデータをSQL文 「Insert into・・・」で登録
・[テーブル]データ行をそのまま「InsertRowDirectry」で登録
など、お知らせ下さい。
Q96-3:
@ついては 検索してみた結果、関連ファイル「selectで検索してみた結果.txt」のように全角でした。
Aについては、関連ファイル SHOW VARIABLES LIKE.txt のようになってます。
Bについては、Server version: 5.0.77-community-nt MySQL Community Edition(GPL)
C は startUpdate InsertRowDirectry finishUpdate のセットで登録してます。
関連ファイル:SHOW
VARIABLES LIKE.txt、selectで検索してみた結果.txt
A96-3:
こちらで検証してみたところ、『MZPlatformのテーブルデータをメソッド「InserRowDirectry(String, PFObjectTable)」でMySQLデータベースのsjisテーブルの挿入したところ、全角バックスラッシュに文字化けする』ことが確認できました。
この現象は文字コード変換に関わる問題ですが、さらに「\」が特殊記号であることも考え合わせる必要もあるかと存じます。以下ご検討ください。
1)「InserRowDirectry(String, PFObjectTable)」でデータを挿入する場合には[データベースアクセス]のデータベース名の接続文字列に
「?useUnicode=true&characterEncoding=SJIS」を追加して下さい。「データベースアクセスチュートリアル3(機能拡張版).mzax」の「データベース名」欄のデータベース名の後に記述してある文字列です。
[データベースアクセス]の「データベースに接続する)」の<引数1>は
「jdbc:mysql://localhost/データベース名/?useUnicode=true&characterEncoding=SJIS」
となります。
2)SQL文「Insert into…」でデータを追加する場合には「\」は特殊記号として扱われますので、例えば「\あいう」というデータは単なる「あいう」として追加されます。「\」として追加したい場合には「\\」とする必要があります。
1)、2)から「InsertRow」等のメソッドを用いた更新と、通常のSQL文による更新とでは、防止策を講じないとMZPlatform上の入力と違ってしまうことは同様ですが、変換のされ方に違いがあります。
いっそのこと「\」ではなく「/」を使って頂くのも一案かと存じます。
MZPlatform、Windowsコマンドライン上でも「/」を区切り文字に使ったパス指定で問題なく動作するかと存じます。
入力が面倒な場合、または表示は「\」でという場合には、データ更新、表示前に「/」と「¥」の置換えを行って頂くことになります。
MySQLデータベースのsjis設定も文字化けに大きく関わっていますので、検討し何か分りましたら、再度ご連絡致します。
ご連絡:
データアクセスで、、データベースのURLのところで
jdbc:mysql://localhost/seisan?useUnicode=true&characterEncoding=SJIS としたら全角にならず保存できました。