• 締切済み
  • すぐに回答を!

ExcelでUTF-8のcsvデータを表示するには

あるデータベースから出力したCSV形式のデータがあるのですが、 文字コードがUTF-8なので、直接Excelで開くと文字化けがあります。 なので、一度出力したcsvファイルの拡張子をtxtに変えて、 それをExcelから開くという作業をして対応しています。 (そうすると文字コードが選択できるので) しかしcsvをtxtに変えてExcelで開くと、 思いもよらぬところで改行されてしまい、 正しくデータが表示されません。 例)csvでそのまま開いたとき ユーザーコード 苗字 名前 住所 001    山田 太郎 東京都大田区鵜の木 1-2-3 002    高橋 愛子 東京都港区六本木2-3-4 ↓ txtに変換したのちにexcelで開いたとき ユーザーコード 苗字 名前 住所 001    山田 太郎 東京都大田区鵜の木 1-2-3                  ←余計な改行が発生 002    高橋 愛子 東京都港区六本木2-3-4 これを回避するために、一度csvで開いて、 セル内改行コードを空白と置き換えるという作業をしたのですが、 それでも上記のような改行が発生してしまっています。 UTF-8のcsvを文字化けなくExcelで開く方法は他にはないでしょうか? また上記方法の改善点はありますでしょうか? ご助言宜しくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数23067
  • ありがとう数6

みんなの回答

  • 回答No.2

もう読んでないかもしれませんが、、、 UTF-8 には BOM(Byte Order Mark)があるものと、無いものが あります。公称ではありませんが、一般的には  ・UTF-8 (BOM有り)  ・UTF-8N(BOM無し) などの呼び方で区別されるようです。 Excel で UTF-8 エンコードされた CSV を開くには、この BOM が 無いと文字化けします。そのシステムから出力された CSV は、 UTF-8N なのでしょう。対策として、  ・TeraPad などのエディタで「文字コード指定保存」コマンドを   使い、UTF-8(BOM有り)で保存しなおす  ・VBA で BOM バイナリをくっつけてから開く などの方法がとれそうです。 後者の VBA を利用するなら以下のようなソースになると思いますが、 エディタを使った方が簡単でしょう。 なお、下記ソースは必要最小限のことしか書いてません。試す場合は、 バックアップをとってからでお願いします。 勘違い回答ならばスルーの方向で。。 Public Sub OpenCSV_UTF8()      Dim fn As String   fn = CStr(Application.GetOpenFilename("CSVファイル (*.csv), *.csv", _                      MultiSelect:=False))   If UCase$(fn) = "FALSE" Then     Exit Sub   End If      If AddUTF8BomBinary(fn) Then     Dim wb As Workbook     Set wb = Workbooks.Open(fn)   End If End Sub ' // UTF-8 エンコードされたファイルの BOM の有無を確認し、 ' // BOM 無し(UTF-8N)ならば、BOM 付きで上書きする ' Public Function AddUTF8BomBinary(ByVal fn As String) As Boolean   Const adTypeBinary     As Long = 1   Const adSaveCreateOverWrite As Long = 2      On Error GoTo Err_   ' UTF-8 BOM バイナリデータ   Dim bin(2) As Byte   bin(0) = &HEF   bin(1) = &HBB   bin(2) = &HBF      ' ファイルからバイナリストリームを作成   Dim stm1 As Object ' ADODB.Stream   Set stm1 = CreateObject("ADODB.Stream")   stm1.Type = adTypeBinary   stm1.Open   stm1.LoadFromFile fn      ' UTF-8 BOM の有無確認   Dim bHasBom As Boolean   Dim i    As Long   bHasBom = True   For i = 0 To UBound(bin)     If stm1.Read(1)(0) <> bin(i) Then       bHasBom = False       Exit For     End If   Next i   ' BOM 無し(UTF-8N)ならBOMを加えて上書きする   If Not bHasBom Then     Dim stm2 As Object ' ADODB.Stream     Set stm2 = CreateObject("ADODB.Stream")     stm2.Type = adTypeBinary     stm2.Open     stm2.Write bin     stm1.Position = 0     stm1.CopyTo stm2     stm1.Close     stm2.SaveToFile fn, adSaveCreateOverWrite     stm2.Close   End If   AddUTF8BomBinary = True Bye_:   On Error Resume Next   stm1.Close: Set stm1 = Nothing   stm2.Close: Set stm2 = Nothing   Exit Function Err_:   MsgBox Err.Description, vbCritical   Resume Bye_ End Function

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 回答No.1

直接の回答ではないのですが……。 もしも、文字コードを変更しても良いのであれば、 http://www.vector.co.jp/soft/dl/win95/util/se326595.html というようなソフトで、shift-jis に変換してしまえばいいかと思います。 UTF-8 のまま編集する必要があるのなら(編集の規模にもよりますが)EmEditor というエディタをお勧めします。 http://jp.emeditor.com/ ちょっと高いですが(といっても、4,200円ですが)UTF-8 の、CSV ファイルを表示する・編集をするためには、十分な機能を持っています。 (UTF-8 を含む ユニコード対応と、csv 編集モードつき) 元々がエディタですので、文字の編集や検索・置換は得意ですし、csv で分離されたひとつの項目であれば、一括削除や、それをキーにしたソートも可能です。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早々のご回答ありがとうございます! UTF-8のまま編集できるソフトがあるんですね。 ちょっと体験版を試してみたいと思います! ただUTF-8のデータをほぼ参照するだけなので (海外の登録者の名前などを見る) 有償ソフトを使うほどでもないかなぁ。。 でも奥の手はこちらのソフトを使用したいと思います。 有難うございました。

関連するQ&A

  • UTF-8にエンコードされたCSVファイルをメモ帳で編集

    UTF-8にエンコードされたCSVファイルをメモ帳で編集しても文字コードはそのままなのでしょうか? 上記UTF-8コードCSVファイルをメモ帳で見ると、ちゃんと文字コード変換されてきれいに見えます。 編集作業として、レコード(行)の削除のみです。 よろしくお願いいたします。

  • SJISのCSVをutf-8に変換してインポート

    WAMP初級者です。 とある情報を検索するサイトを運営していますが、その検索対象となる元データはCSVで作成し、MySQLへインポートして情報を更新しています。 環境は文字コードutf-8としているので、エクセルで編集したCSVそのままではだめなので、いったんKanjiTranslator(http://www.kashim.com/kanjitranslator/ )を使ってutf-8に変換し、それをインポートするやり方をとっています。 皆さんも、こんな感じでひと手間かけているのかと、ふと疑問に思いましたので、質問させていただきます。 1)CSVでutf-8で保存する方法がある?(調べていますが、なさそうでした。。) 2)KanjiTranslatorなどは使わずに、もとのSJISのCSVから直接utf-8でインポートする方法がある? 3)エクセルではなくもっと良いのがある? ちなみに環境はMySQL Server 5.6 Apache/2.2.4 (Win32) PHP/5.4.22です どなたかご存知の方ご教授いただけますと幸いです。

  • UTF-8が分からなくて困っています。

    SJIS → UTF-8形式に変換してデータを伝送したいです。 データの内容は、数字、タブ、改行コード(LF)です。 コードを調べてみたら、文字コードが同じみたいなので、SJISのまま伝送すると正常にファイルを読込むことができないでしょうか? データに付加しなくてはいけないコードなどあるのでしょうか? よくわからず困っています。教えてください、よろしくお願いします。

  • ExcelでのCSV書き出しについて

    Excelで書き出したCSVデータをJavaScriptで読み込ませてHTMLで表示させようと考えております。その際に、Excel側でどうにかしたい問題点が2点あり、今回質問させていただきます。 問題点としては ・CSVの中身が日本語を含む場合、文字コードがUTF-8でないとHTMLで文字化けしてしまう。 ・CSVを秀丸などのテキストエディタの中で表示させると前後に「"」が入ってしまう。 上記の2点の問題をクリアしたいと考えております。 解決させるべき問題としては ・UTF-8でCSVを書き出すこと ・前後の「"(ダブルクォーテーション)」を外すこと ・カンマ区切りのCSVであること 他のテキストエディタと一緒に使えば良いのですが、Excelで一元化したいので、どなたか、方法または参考になるサイトがあれば教えて下さい。方法はマクロでもVBAでもどちらでも結構です。 よろしくお願いいたします。

  • テキストファイルウィザードを使用したCSVファイル読み込みの挙動について【Excel2003】

    テキストファイルウィザードを使用したCSVファイル読み込みの挙動について【Excel2003】 <CSVファイル例> "aaaa","bbb<改行コード 0d0A>bb","ccc" 上記のようなCSVファイルを、 ダブルクリックにてExcel起動すれば正常に表示されますが、 テキストファイルウィザード(データ→外部データ取り込み→データの取り込み) を使用して、読み込みを行うと改行されて表示されてしまいます。 これは、Excelの仕様なのでしょうか? ご存知の方いらっしゃいましたら教えていただけますでしょうか? 現在の本質的な問題は、 ------------------------------------------------------------------- Excel2003にて、文字コードがUTF-8のCSVファイルを下記方法にて読み込む ・テキストファイルウィザードを使用 ・文字コードをUTF-8 ・カンマ区切り設定 で読み込みを行うと文字化けしないで表示されるのですが ダブルコーテーション中のデータ内に改行コード0d0aが含まれると 改行されてしまいます。 ------------------------------------------------------------------- と言う現象の調査をしております。

    • 締切済み
    • PHP
  • utf-8のCSVをshift_jisに変換したい

    Perl5.8でCSVをダウンロードできる仕組みをつくっています。 utf-8でコードを記述しているため当然ながらダウンロードしたCSVデータもutf-8です。 しかしながらエクセルでダブルクリックで開く場合どうしてもutf-8だと支障があるため、 shift-jis(もしくはcp932)で開きたいのです。 ダウンロード時に文字とファイルをshift_jisに変換する方法はございませんでしょうか? 以下作成済みのコード ------------------------------------------------------- if(!open(OUT,"$CSV_FILE")){&error('CSVデーターファイルがありません'); } else{ @csvdata=<OUT>; close(OUT); } foreach(@csvdata){ $downloaddata .= $_; } print "Content-Disposition: attachment; filename=$CSV_FILE_NAME\n\n"; print $downloaddata; exit; ------------------------------------------------------- 何卒よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Excelで改行が含まれたフィールドをcsvに変換する際改行を取る方法を教えてください

    ExcelをCSVファイルにする必要があり、レコードの形式を "aaa","bbb","ccc"改行コード にしたいいと考えております。(それぞれのフィールドに改行コードは不可) Excelファイル時に、改行を置換(Ctrl+JをNULLで置換)しCSVで保存しエディタで見ると改行が残っています。(CR-LFがCRに置換されているため) 使用しているエディタはEmエディタです。 Accessでインポートしたのちtxtでエクスポートしても結果は一緒でした。 フィールド内の改行だけを取る方法はありますでしょうか。

  • CSVとtxtからCSVファイルをつくるには

    元ファイル1.CSVと 元ファイル2.txtから 新しいCSVをつくりたいのです。 元ファイル2.txtは元ファイル3.txt、元ファイル4.txtといっぱいあります。 こちらは改行ありの文章です。 元ファイル1.CSVの第二フィールドに、元ファイル2.txtを差し込みたいのです。 今までは元ファイル2.txtを開いてコピーして、エクセル上で元ファイル1.CSVにペーストして、 CSVで保存していました。 しかし、このやり方だとtxtファイルの数が増えてくると、だんだんやりきれなくなってきました。 なにかうまい方法はないでしょうか?

  • CSV形式のファイル名をCSVの先頭に入れる方法

    EXCEL CSV形式のファイル名をCSVファイルの先頭に入れるたいのですが,EXCELのマクロやBVなどで簡単にできるよい方法はないでしょうか。 例えば, ファイル名:  123_001.csv 123_001.csvの内容:  氏名,年齢  山田,25歳    ↓ の123_001.csvを  コード,氏名,年齢  123_001,山田太郎,25歳 というデータにしたいのです。 できれば,フォルダ内に保存されているCSVファイルを一括で処理したいのですが...。 例) 123_001.csvの内容:  氏名,年齢  山田,25歳 123_002.csvの内容:  氏名,年齢  吉田,30歳 123_003.csvの内容:  氏名,年齢  鈴木,50歳    ↓ 123_001.csvの内容:  コード,氏名,年齢  123_001,山田,25歳 123_002.csvの内容:  コード,氏名,年齢  123_002,吉田,30歳 123_003.csvの内容:  コード,氏名,年齢  123_003鈴木,50歳 よろしくお願いします。

  • アクセスからエクスポートしたエクセルデータについて

    アクセスからレコードのデータを1000件ほどエクセル形式(2000)でエクスポートしたのですがほとんどのデータのアタマにアポストロフィ「′」が付いてしまい困っています。 そのデータを他のデータをマッチングしたいため、どうしてもその「′」だけを取りたいのですが、何か一度の作業で取れる、良い方法がありますでしょうか? また取り出し方法に何か問題があったのでしょうか? どなたかお詳しい方、大変お手数ですがご教授お願いいたします。 例「′埼玉県○○市××町1-2-3」 例「′山田 太郎」 ↓  「埼玉県○○市××町1-2-3」  「山田 太郎」 この様にしたいのですが。