2010年1月 8日

[mysql 15136] Re: utf8文字化け(森鴎外)

坂井です

戸田さん、まずは確認できたようでなによりです。
若干まとめていただいた内容で誤解があるようなので補足させて
いただきます。

> ・MySQL5のutf8は3バイトまでしか対応していません。
> ・UTF-8の4バイト対応は、MySQL6.0.4以降になります。


MySQL 5.0, 5.1, 5.5-m2 は、いわゆる「4バイトUTF-8」には
対応していません。
MySQLのリリースモデルが変更になったためおそらく、
MySQL 5.6 相当のマイルストンリリースで乗るのではないかと
聞いたことがあるような気がします[要出典]。
MySQL 6.0 はすでに開発が中止されています。

補足ついでにあと2つほど。
・4バイトUTF-8文字の一覧:
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?cmd=read&page=utf8_4

・今回はファイルに落として確認しましたが手早く文字コード(16進)
で確認したいなら、HEX() 関数が便利です。

実行例)
mysql> select hex(name) from hito;
+--------------------+
| hex(name) |
+--------------------+
| |
| E6A3AEE9B797E5A496 |
+--------------------+
2 rows in set (0.02 sec)

これを見ても、森(E6A4AE) オウ(E9B797) 外(E5A496) 各
3バイトなのがわかりますね。
(森外、と森オウ外 を登録して比較したら尚わかりやすいかもしれません)


thank you
On Fri, 8 Jan 2010 12:26:42 +0900
戸田峻 <todappi@xxxxx> wrote:
> 坂井さん
>
> > 戸田さん。鴎外の旧字ってヘンの中身が口三つのやつですよね。
>
> まさにその漢字です
>
>
> > 最初にINSERT文を作成して確認したのが秀丸エディタなので、
> > 結果の確認もまずは同じ環境で行ってみたらどうでしょうか。
> > (表示ツール側の対応状況により表示されていないだけの気がします)
> >
> > 方法例:
> > mysql サーバに接続(utf8で)
> > mysql> プロンプトで tee c:\out.txt と入力(ファイル名はご自由に)
> > mysql> プロンプトで SELECT * FROM <そのテーブル> を実行
> > 秀丸エディタで c:\out.txt を確認(utf8で)
>
> 上記方法例で文字化けがしないことが確認できました。
> ありがとうございます。
>
> すばやい返答ありがとうございました。
>
> また多方面からいろいろな情報をいただき皆様ありがとうございます。
> ・MySQL5のutf8は3バイトまでしか対応していません。
> ・UTF-8の4バイト対応は、MySQL6.0.4以降になります。
>
>
> 以上、ありがとうございました。
>
> 2010年1月8日12:15 SAKAI Kei <sak2@xxxxx>:
> > 坂井です
> >
> > 戸田さん。鴎外の旧字ってヘンの中身が口三つのやつですよね。
> >
> > 最初にINSERT文を作成して確認したのが秀丸エディタなので、
> > 結果の確認もまずは同じ環境で行ってみたらどうでしょうか。
> > (表示ツール側の対応状況により表示されていないだけの気がします)
> >
> > 方法例:
> > mysql サーバに接続(utf8で)
> > mysql> プロンプトで tee c:\out.txt と入力(ファイル名はご自由に)
> > mysql> プロンプトで SELECT * FROM <そのテーブル> を実行
> > 秀丸エディタで c:\out.txt を確認(utf8で)
> >
> > おそらく正しく表示されると思います。
> >
> >
> > Thank you
> > On Fri, 8 Jan 2010 11:44:30 +0900
> > 戸田峻 <todappi@xxxxx> wrote:
> >> 戸田と申します。
> >> 長々と記載して申し訳ありません。
> >>
> >> 現在一部のutf8の漢字が文字化けが発生してしまい解決が出来ません。
> >>
> >> 下記私の設定情報、現在の状態です。
> >>
> >> ・環境
> >> Microsoft Windouws XP
> >> MySQL5.1
> >>
> >> ・DBの文字コードの設定情報(下記コマンド実行)
> >> show variables like 'character_set%'
> >>
> >> 結果
> >> 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
> >> character_sets_dir | C:\Program Files\MySQL\MySQL Server
> >> 5.1\share\charsets\
> >>
> >>
> >> ・入力したデータ(入力した方法)
> >> utf8での漢字データの入力
> >> -varchar(10)属性に下記データ入力
> >> aaa
> >> 常用漢字
> >> 森鴎外(※鴎:おう 実際は旧漢字を入力してます)
> >>
> >>
> >> 方法
> >> -秀丸エディタにて文字コードをutf8に設定
> >> -簡単なinsert文を記述し(データに漢字を入力)、.sql拡張子で保存
> >> -コマンドプロントにてsourceコマンドを使用し上記作成ファイルを実行
> >> -結果は「Query OK, 0 rows affected (0.00 sec)」
> >>
> >> ・入力されたデータの確認(※この時点で文字化け発生)
> >> CSEで確認(CSE:sql開発ツール)
> >>
> >> -ODBCコネクタでutf8→sjisに変換(自動的にしてくれる)
> >> -CSEにてselectクリエ実行
> >> -出力されたデータ
> >> aaa
> >> 常用漢字
> >> 森?外(※旧漢字の鴎が?に文字化け)
> >>
> >> コマンドプロントで確認
> >> レジストリを弄り、utf8でMSゴシックを使用できるよう設定
> >> -レジストリエディタでCodePageとTrueTypeFontで65001を追加
> >> -コマンドプロントを開き、chcp 65001コマンドを実行(コマンドプロントをsjis→utf8に変換)
> >> -以下データベースに接続、select文実行
> >> -下記結果内容が出力される
> >> 入力されているはずのデータ
> >> aaa
> >> 常用漢字
> >> 森鴎外(※鴎:おう 実際は旧漢字を入力してます)
> >>
> >> 結果
> >> aaa
> >> 常用漢字
> >> 森?外(※旧漢字の鴎が?に文字化け)
> >>
> >>
> >> Windouws上でどうutf8の漢字データを入力して、どう確認していいのかが不明です。
> >> 何かご指摘があればお願いします。
> >>
> >> 以上、よろしくお願いします。
> >
> >
> >
> >


投稿者 xml-rpc : 2010年1月 8日 12:47
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/92148
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。