初心者ですみません。windowsのDOSコマンドで、SJISのテキストファイルを、unicodeに変換したいのですが、ファイルの文字コードは変換できましたが、ファイルの中が文字化け(日本語部分)してしまいます。
何か解決方法はありますでしょうか。
よろしくお願いします。

質問者からの補足コメント

  • うーん・・・

    A.txt(SJIS)を、Z.txt(Unicode)に変換したい。
    ファイルの中は、日本語とアルファベットが混在した文字が書かれている。

    変換方法は、
    START /MIN /WAIT CMD /C CHCP 65001 ^& ^( SET /P x=""^<nul ^& CMD /U /C TYPE A.txt ^) ^>Z.txt

    実行したあと、普通にエディタでファイルを開くと、Unicodeにはなっているが、日本語部分が文字化けしている。

    という流れです。

      補足日時:2016/06/30 20:39

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#2の回答者です。


あれから再度試してみました。
一応、成功しました。私は、もうバッチそのものは、とうに忘れましたので、既存にあるものを入れ替えながら試してみました。
ただ、環境に左右されやすく、何か微妙ですね。

もともと、command prompt は、chcp 65001 にしていますので、以下のようなbatch にしました。

chcp 65001 環境の元で行われている前提で、試してみてください。

for /f "delims=: tokens=2" %%i in ('chcp') do if not "%%i"==" 932" start /min /wait cmd /c chcp.com 932 ^& %0 %* & goto :eof
start /min /wait cmd /c chcp.com 932 ^& ^(set /p x=""^<nul ^& cmd /u /c type sjis.txt^) ^>unicode.txt

出来上がったファイルの中をバイナリでみますと、BOMなしのUnicode だから、エディタによっては文字化けしてしまいますね。
    • good
    • 0

これですかね?


http://scripting.cocolog-nifty.com/blog/2008/12/ …

これを見る限り、そのコマンドはUTF-8→Unicode(UTF-16)の変換のようですが。



利用が許されるなら、nkfとかiconvとかが楽にできると思います。
    • good
    • 1

>SJISのテキストファイルを、unicodeに変換したいのですが、


>ファイルの文字コードは変換できましたが、ファイルの中が文字化け(日本語部分)してしまいます。

私などが直面している問題とは、まったく別だと分かりました。
DOSコマンドというか、コマンドプロンプトで、chcp を使うというわけでしょうね。

ここら辺りの話でしょうけれども、本格的な話ではないようですから、そこそこにしたほうがよいでしょうね。
http://lsair.html.xdomain.jp/a/e/cmd-unicode.html

本格的には、古いツールですが、nkf には変えられませんね。
http://www.vector.co.jp/soft/dl/win95/util/se295 …
nkf.exe nkf32.dll Windows用
    • good
    • 1

具体的に


・どんなコマンドを入力して変換したのか
・どんな方法を使って「文字化け」の確認をしたのか
を書いてください。

今の状態では
・操作が間違っていてそもそも変換してない
・確認方法がよくないため、文字化けしたように見える。正しい方法で確認すれば正しく変換できている
等も考えられます
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q文字コード指定のないWebページ表示に文字化けするのはHTMLファイルのせいかブラウザのせいか?

宜しくお願いします。
[質問]
 文字コード指定のないWebページ表示に文字化けするのはHTML
 ファイルのせいかブラウザ(IE)のせいか?

 Shift-JISで文字コード指定を明示的にしてないHTMLファイル
 をIEで表示するとタイトルバーやページ上の日本語文字が文字
 化けすることがありますが、これは文字コードの指定をソース
 コードで行ってないHTMLファイルのせいなのか・それともIEが
 誤動作したせいなのか?
 どちらのせいかご存じの方いたら教えてください。

 また、文字コード指定がないHTMLファイルで文字化けする時、
 なぜ普段使用してない文字コードでHTMLファイルを読み込もう
 とブラウザがするのかご存知の方いたら教えてください。
 (テキストファイルだと文字コード指定して保存できますが、
 HTMLファイルは文字コード指定して保存できないと思うので、
 通常Shift-JIS選択してページ閲覧している環境でわざわざ他
 の文字コードで読み込もうとするのか疑問です。)

Aベストアンサー

HTMLファイル作成のアプリケーションとはHTMLエディタやテキストエディタのようなものですよね?
.html、.htm、両方とも文字コードを選択できるものがありますよ。
最近のフリーのソフトでもEUC-JP、UTF-8、JIS、Shift-JIS、Unicodeは選べますよ。

それ以降の説明は成り立つと思いますよ。
ご存知かも知れませんが念のために文字コードについて詳しく解説されているページを貼っておきますね。

参考URL:http://www.kanzaki.com/docs/jcode.html

QDOSコマンドのループ内のTIMEコマンド

DOSコマンドのループ内のTIMEコマンド

ループの中で、少し時間のかかる処理を連続的に行ない、さらに時刻表示を行い
1回あたりの時間が分かるように表示したいと思っています。
下記のソースのイメージです。(極めてシンプルにしました)

しかし、ループ内で実行するtimeコマンドがすべて同じ
時刻になってしまい、意図通りの動きになりません。


ループ内で、ループごとに異なる時刻を表示することは可能でしょうか?
もしできるのであればその方法を教えてください。
よろしくお願いします。


@echo start◆%time%

@FOR /L %%I IN (0, 1, 3) DO @(
@echo %%I【%time%】
@ping localhost -n 2 > nul
)

@echo end ◆%time%

pause

Aベストアンサー

ループの前に
setlocal enabledelayedexpansion
と書いておいて、ループの中では
%time%の代わりに!time!を使いましょう。

Q文字コードを調べる自作関数

A1セルに「あ」と入力したら、B1セルに文字コードを表示させる自作関数を作りたいのですが、
全くわかりません 泣

とりあえず
Public Function 文字コードへ変換() As Long

End Function
を作るまではわかりました!笑

ひらがなの文字コードが-32097 ~ -32015
ということなのでLongにしました。

続きがわかる方がいましたら助かります!
本当暇な時でいいので
よろしくお願いします。

Aベストアンサー

こんにちは。

VBAでは、通常、Shift JIS か、Unicode です。ワークシート関数のCODE は、JISです。どちらにも存在しないものが、JIS句点です。

>Public Function 文字コードへ変換() As Long
>
>End Function
>を作るまではわかりました!笑

ユーザー定義関数で、「文字コードへ変換」として、引数なしでは、使えません。

>ひらがなの文字コードが-32097 ~ -32015

というなら、Long 型ですが、それでどうするかなのです。なぜPublic キーワードを入れているのか、それで「続き」と言われても、4コマ漫画の最後のコマを埋めてください、という感じがして、目的は、いったい、どうしたいのか分かりません。

この分野の全体は、思っている以上に簡単ではないと思います。

Q「C#」文字コードの取得&文字変換

C#で文字コードを調べるプログラムを作成しています。
そこで2つ質問をさせてください。
1つ目(文字コード調べ)
TextBoxに漢字を入力して,各エンコーディングの文字コードを調べるときに,UNICDEの場合,
Encoding enc_default = Encoding.GetEncoding(932);
string input = tb_input.Text;
byte[] byte_input = enc_default.GetBytes(input);
string outtext_unicode = "";
Encoding enc_unicode = Encoding.Unicode;
byte[] byte_unicode = Encoding.Convert(enc_default,enc_unicode, byte_input);
foreach (byte b in byte_unicode)
{
outtext_unicode += string.Format("{0:X}", (int)b);
}
tb_output_unicode.Text = outtext_unicode;
とすると,調べたい文字コードがLE(リトルエディアン)で出力されます。これをBE(ビッグエディアン)で出力されるにはどうしたらよいでしょうか?
ご存知の方がいらっしゃいましたら,ぜひ教えてください。
よろしくお願いいたします。

2つ目(文字コードから文字を取得する)
上記の質問と逆のパターンで,TextBoxに文字コードを入力してもらい,人間が読める文字に変換する場合下記のようなコードを書くと,
string codePoint_string = tb_output_unicode.Text;
int codePoint = int.Parse(codePoint_string);
char c = (char)codePoint;
tb_input.Text = Convert.ToString(c);
ASCIIの文字コードを入力した場合には,きちんと変換してくれるのですが,漢字の文字コードを入力すると,FormatExceptionが発生します。
何か勘違いをしているのかもしれませんが,いまいちやり方が創造できません。
こちらも,ご存知の方がいらっしゃいましたら,ご教示願います。

C#で文字コードを調べるプログラムを作成しています。
そこで2つ質問をさせてください。
1つ目(文字コード調べ)
TextBoxに漢字を入力して,各エンコーディングの文字コードを調べるときに,UNICDEの場合,
Encoding enc_default = Encoding.GetEncoding(932);
string input = tb_input.Text;
byte[] byte_input = enc_default.GetBytes(input);
string outtext_unicode = "";
Encoding enc_unicode = Encoding.Unicode;
byte[] byte_unicode = Encoding.Convert(enc_default,enc_unicode, byte_input);...続きを読む

Aベストアンサー

フォームデザイナで,
Form1に対し,TextBox1とButton1を貼り付け,以下のコードを入力。
=============================
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim codePoint_string As String = TextBox1.Text
Dim codePoint As Integer = Integer.Parse(codePoint_string)
Me.Text = Char.ConvertFromUtf32(codePoint)
End Sub
End Class
'=========================
その後
http://homepage3.nifty.com/jgrammar/ja/tools/codeval0.htm
を利用して
文字「あ」がUTF-32で00003042=12354であることを確認後
TextBox1に12354を入力してButtonをクリックしたら
Form1に「あ」が表示された。・・・けどUTF-16だから違うんだよね?
http://msdn2.microsoft.com/en-us/library/wdh8k14a(VS.80).aspx
とか
http://msdn2.microsoft.com/en-us/library/z2ys180b(VS.80).aspx
とか使うのかもしれないけど良く解らん。

フォームデザイナで,
Form1に対し,TextBox1とButton1を貼り付け,以下のコードを入力。
=============================
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim codePoint_string As String = TextBox1.Text
Dim codePoint As Integer = Integer.Parse(codePoint_string)
Me.Text = Char.ConvertFromUtf32(codePoint)
End Sub
End Class
'========================...続きを読む

Qmysqlのデータベースの文字コードの変換について

mysqlのデータベースの文字コードの変換について教えてください。

テストサーバー環境で誤って文字コードUTF-8のデータベースを作成し、文字コードEUC-JPのデータを投入してしまいました。

それでもテストサーバー環境では文字化けせずにウェブアプリを表示できていましたが、テストサーバーのデータをエクスポートすると、テキストエディタで開いた時点で文字化けしています。
(文字コードはUTF-8、EUC-JPのいずれでも)

もちろんそのデータを本番サーバーにインポートしても文字化けしてしまいます。
(データベース文字コードはUTF-8、EUC-JPのいずれでも)

テストサーバーからデータをエクスポートする前に文字コードを変換することは可能でしょうか?

もしくは他に問題を解決する方法はありますでしょうか?

ご存知の方がいらっしゃいましたら教えてください。

Aベストアンサー

MySQLだけでは、既に入れてしまったデータの文字コード変換は難しいのでは?
phpかperlかで、文字コードを、プログラムで判定して、必要な文字コードへ変換する作業を挟む必要があるでしょう。

大まかな作業手順
1.select * from table_name
で全項目全行取得(データが大きいなら、limitで適宜行数分割)

2.各行、各項目データの文字コード判定、変換

3.変換後データを、csvで書き出して、別の新しく作ったtable(本番サーバーなど)へLOAD DATA INFILE

QMS-DOSのコマンドでファイルをクリアするコマンドありますか?

DOSに関してはシロート同然のわたしです。
お助け下さい!

あるテキストファイルをの中身だけを空にしたいのですが、
MS-DOSのコマンドで、ファイル名を指定して
ファイルの中身を全て消すコマンドってありますでしょうか?
ある様でしたら、実際のコーディング例も教えていただけませんか?
(「aaa.txt」と言うファイルをクリアするとしたら・・・?)


それと、もし、MS-DOSのコマンドの一覧が分かるホームページなどありましたら合わせて教えていただけませんでしょうか?

Aベストアンサー

これが正式な使い方かはわかりませんが(オプションの説明を見ていると違うような気が・・・)、/Iオプションをつけることで一応確認メッセージを消せるようです。
動作としては、コピー元のファイルが一つの時はコピー先に指定したものをファイルとして、コピー元のファイルが複数ある場合はコピー先をディレクトリとして扱うようになります。
ちなみに/Iの意味は、オプションの説明によると、
「受け側がなく、複数のファイルをコピーする場合、受け側をディレクトリとしてコピーします。」
だそうです。
英語サイトの説明には
「By default, xcopy prompts you to specify whether Destination is a file or a directory.」
とあるので、動作としてはこれであっているのかもしれません。

長くなりましたけど、
xcopy /I コピー元ファイル名 コピー先ファイル名
で確認メッセージなしで0バイトのファイルもコピーできるようになると思います。

参考URL:http://www.microsoft.com/technet/prodtechnol/winxppro/proddocs/xcopy.asp

これが正式な使い方かはわかりませんが(オプションの説明を見ていると違うような気が・・・)、/Iオプションをつけることで一応確認メッセージを消せるようです。
動作としては、コピー元のファイルが一つの時はコピー先に指定したものをファイルとして、コピー元のファイルが複数ある場合はコピー先をディレクトリとして扱うようになります。
ちなみに/Iの意味は、オプションの説明によると、
「受け側がなく、複数のファイルをコピーする場合、受け側をディレクトリとしてコピーします。」
だそうです。
英...続きを読む

Q文字コードの調べ方を教えて下さい。

文字コードの調べ方を教えて下さい。
外字を作るため、文字コード表から参考の漢字を表示したいのです。
文字コードを調べる方法を教えて下さい。

Aベストアンサー

Word2002以降
文字が解っているなら
文字を入力
入力した文字の直後に文字キャレットがある状態で
Alt+X とキー操作すればUnicodeの文字コードに変換されます。
再度、Alt+X とキー操作すれば元の文字が表示されます。
Windows XPの外字エディタはUnicode仕様だったと思います。

文字コードを使わなくても
「参照」ダイアログの「形」の処に入力、あるいはコピペすることができます。

外字エディタの使い方
http://www.gon-net.jp/windows/gaizi/gaizi.htm

QUTF8CSVをシフトJISCSVへ文字コード変換

UTF8形式CSVデータをシフトJIS形式CSVデータに
文字コード変換するにはVBAプログラムの勉強を
すれば可能でしょうか??

Aベストアンサー

そういうことなら、勉強してもいいでしょう。

> テキストエディタで開いてShift_JIS指定で保存はしたことがあるのですが、シフトJIS対応のカスタマーバーコード対応のCSV生成ソフトを使用すると文字化けが発生します。

これが本当にテキストエディタが原因かどうかは調べておいた方がよいでしょう。
例えば、UTF-8にしか無い文字をShift_JISにしようとした結果で発生したものなら、自作プログラムでも同じ文字化けが発生するでしょう。


> フリーソフトも考えたのですが、50万件のデータをしっかり加工したりするのに、動作不安定にならなければと思って質問しました。

失敗したくない気持ちもわかりますが.....
これから勉強しようというあなたが作るのと、すでに多くの人が使って実績のあるフリーソフトと、どっちが安定しているか、ということは考えておいた方がよいでしょう。

QJavaScriptの文字コードについて

テキストボックスに入力された文字の文字コードを表示させたいのですが、
/を入力すると、文字コードは191と出力されます。
/の文字コードは47だったと思うのですが。

文字コードを出力するソースは以下のようになっています。

//--押されたキ-コードを返す
function getKEYCODE_A(){
alert("true" + event.keyCode)
}

これをinputタグのonKeyUp属性に指定しています。

なぜ/の文字コードが191となるのか分かる方がいましたら、
教えてください。
よろしくお願いします。

Aベストアンサー

onkeydown、onkeyup では基本的に押されたキーの Unicode を返し、onkeypress では基本的に入力されようとしている文字のコードを返すようです。なので表示されるコードが違うということです。

Qファイルの文字コードをUTF-8に変換

日次バッチで出力後のCSVファイルについて、文字コードをUTF-8(BOMなし)に変換したいのですが、
出力内容に日本語が含まれない場合、以下のコマンドだけでは変換できないようです。

<現状使用しているコマンド>
start /min /wait cmd /c chcp 65001 ^& cmd /c type c:\hoge\hoge_uni.csv > c:\hoge\hoge.csv
del /Q c:\hoge\hoge_uni.csv

お客様に相談したところ、ファイル出力の際に日本語を追加して
文字コード変換後に日本語を削除できないか、とのことでしたが
当方がコマンドに詳しくなく、解決策がありましたらご教授頂けないでしょうか?

Aベストアンサー

Unicode のコードポイント 0~127 は ASCII と全く同じ文字をコードし, かつ UTF-8 はその範囲のコードポイントをその値そのものの 1バイトで表しますから, #1 でいわれているように「いわゆるASCIIのみ」であれば BOM なしの UTF-8 と全く同じになります. つまり「変換」してもなにも変化しません.

「変換後にSJISファイルになっていて」というのはどうやって確かめているんでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報