質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

9390閲覧

UTF-8のcsvをShift-JISでDataTableに読み込み、MySQLにInsertする際の文字化けについて

yui_sarasina

総合スコア15

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2015/08/10 05:48

編集2015/08/10 06:26

vb.netにて以下のプログラムを作成しました。

1.DataTableに出力データを作成する
2.文字コードUTF-8指定でcsvを出力する
3.文字コードShift-JIS指定で1のCSVをDataTableに読み込む
4.MySQL(UTF-8で設定済み)のTableにInsertを行う

文字コードの違いからDataTableに読み庫込んだ際に文字化けを起こすと思っていましたが
MySQLにInsertされたデータを確認したところ、文字化けを起こさずに読み込めていました。
現在は同じプログラムを使用すると文字化けを起こし4のInsert時にエラーが発生します。

csvの中身としては英字・数字・漢字・ひらがな・漢字・〒の記号が含まれます。
(主な内容としては通販の商品名や送り先の住所になります。)

どこがどのように動作しているかを確認中ですが、文字コードが違っていても
文字化けを起こさずに処理が行えるケースというのもありえるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

異なる文字コードのファイルをやり取りすること自体が良くないことなので
明示的に同じ文字コードを指定することで回避する

投稿2015/08/25 09:17

yui_sarasina

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

一般的にいえば、文字コードの指定が異なると文字化けを起こします。今回の例では下記を確認すると文字化けしない原因がわかるのではないでしょうか?

  • 2. 文字コードShift-JIS指定でcsvを出力する でShift-JISで出力できているか
  • 3. 文字コードUTF-8指定で1のCSVをDataTableに読み込むで、読み込んだ文字列が文字化けしていないか?→文字化けしないのであれば、自動でShift-JIS→UTF-8変換が行われている?

VB.netには詳しくないので、「自動でShift-JIS→UTF-8変換が行われる」事があるかどうかはわかりません。ごめんなさい。

投稿2015/08/10 05:54

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yui_sarasina

2015/08/10 06:19

ご回答ありがとうございます。 記載した質問文のShift-JISとUTF-8が逆になってしまっていたので修正しました。 2で出力したCSVは指定した文字コードになっておりました。 (Shift-JISとUTF-8でそれぞれ出力してさくらエディタで確認) 3については現在は文字化けを起こしておりますが、 同じプログラムで以前は文字化けしていなかったと思われます。 未検証ですがプログラムの構造上、文字化けを起こしていると MySQLへのInsertでエラーが起きる可能性が高いのと(数量やNuLL非許可がある為) Insertされた過去のデータをみると文字化けせずに登録されています。 自動で変換されたりも含めて調べてみます。
TakayasuNakane

2015/08/10 08:58

MySQL 自体のバージョンは変わっていませんか?
yui_sarasina

2015/08/18 04:31

MySQLのバージョンは開発や稼働環境など全て同一のものを使用しています。 直接の原因は特定できていませんが、 Shift-JISのcsvをUTF-8で読み込む動作自体が良くないことですし vb.netやMySQLで自動的に何か行われているとした場合も バージョン互換などで動作の保証が難しい為、 明示的に同じ文字コードを指定する形にします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問