MySQLのtext型に格納されている末尾の不完全なマルチバイト文字列を削除する方法を教えてください。


※text型の制約でバイト単位でカットされ末尾に不完全な文字列が発生しました。


【環境】
MySQL 5.0.87(Tritonn 1.0.12)
データ型textに65,535バイト以上のマルチバイト文字列をINSERTしたレコードが大量にある。
ujisで格納されている。

【やりたいこと】
ujisで格納されているレコードをcsvでエクスポートしNKFでutf8変換しインポートしたい。
エクスポートの際、となりの文字列と繋がって文字化けが発生してしまう。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/03/31 16:38:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:taroe No.2

回答回数1099ベストアンサー獲得回数132

ポイント50pt

・漢字エリア

上位1バイト  0xa1~0xfe

下位1バイト  0xa1~0xfe

・半角カナエリア

上位1バイト  0x8e

下位1バイト  0xa1~0xdf

http://charset.7jp.net/euc.html

最終のバイトが0xa1~0xfeの時だけそれが切れたものかどうかを判断して

切れたものならそのバイトを捨てる

id:uptime

ありがとうございます。

参考にさせていただきます。

2011/03/28 14:22:46

その他の回答1件)

id:deflation No.1

回答回数1036ベストアンサー獲得回数126

ポイント20pt

回答とは関係しないのでポイントは不要で結構ですが。ujisをutf-8に変換するとビット長が長くなりますから、かえってデータを失うことになりませんか。

ご確認下さい。

id:uptime

ありがとうございます。

utf8に変換後、MEDIUMTEXTのフィールドに格納する予定なので失うデータは壊れた文字列のみだと考えております。

2011/03/26 00:41:37
id:taroe No.2

回答回数1099ベストアンサー獲得回数132ここでベストアンサー

ポイント50pt

・漢字エリア

上位1バイト  0xa1~0xfe

下位1バイト  0xa1~0xfe

・半角カナエリア

上位1バイト  0x8e

下位1バイト  0xa1~0xdf

http://charset.7jp.net/euc.html

最終のバイトが0xa1~0xfeの時だけそれが切れたものかどうかを判断して

切れたものならそのバイトを捨てる

id:uptime

ありがとうございます。

参考にさせていただきます。

2011/03/28 14:22:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません