• 締切済み

コマンドプロンプトにおけるencoding変換

windowsXPで コマンドプロンプトのencodingを変換する場合、chcp 65001で utf_8に変換できるということで、実際にやってみました。ですが、日本語の文字がどうしても受け付けられません。どうしたらutf_8に変換した状態で、 コマンドプロンプト上で 日本語をタイプできるのか、どなたかお教えいただければ有難いです。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.12

>コマンドプロンプト上で 日本語をタイプできるのか、 utf-8に対応したコマンドプロンプト用日本語IMEがあれば可能かもしれませんが、そういうものはおそらく今のところ存在しないと思います。 別途、メモ帳などでデータを作成して、コピーペーストすればいいかと。

tonbeisan
質問者

お礼

notnotさま、 書き込みありがとうございます。 command promptに nkfを使って utf_8による日本語のファイルを表示できますけれども、それだと SQLiteはうまくいきませんでした。command promptにファイルを呼び込むというやり方ではだめなようです。 あるいは、command promptを nkf.exeのdirectryに移行させてから、utf_8による日本語を書き込むというやり方も うまくいきませんでした。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.11

ちょっとだけWEB検索してみたのですが、たくさんあるじゃない ですか。 下記なんかどうですか。参考になりませんか。 WEB検索キーは、「SQLite UTF-8コード」です。 SQLite の DB の文字コードを変換する(EUC-JP → UTF-8) http://www.hazama.nu/t2o2/archives/002728.html sqliteのdbの文字コードを変換する http://yusukebe.com/tech/archives/20070829/002145.html まだまだたくさん悩んでおられる人がそれぞれ書いてますね。

tonbeisan
質問者

お礼

yakan9さま、たびたび解答ありがとうございます。 おっ、もしかしたら 解決できるかなと期待して示されていてるwebを見させていただきました。 なかなかむずかしいですね。 示されているのは、nkfを使って databaseをutf_8に変換するというものですね。 これは、私が前回の書き込みで実行したやり方でした。 そのときは、not encrypted or no databaseという趣旨のメッセージが出たんですけどね。 それと、ここで示されているのは、SQLite3ですね。 SQLite3は 現状では PHPに対応していないという問題があります。ということで、仕方がないのでわたしはSQLite2を使っています。 このWebでは、PHPは使用していないようです。 ただ、nkfでutf_8に変換したときに、なんでnot encrypted or no database で出てきたのか、もうすこし追及すべきであったかもしれないですが、今はしばらくは MySqlを使うことにしているので、 気持ちがそこから離れてしまっている状態です。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.10

> windowsの基準コードである shift-jisを > utf_8に変更できるということなんでしょうか。 いいえ変更できません。 これは、歴史というか、一つの文化であり、そういうふうに 発展してきたものです。 コンピュータの歴史というか、日本独特の歴史そのものです。 昔は、一文字を表すのに、6ビットでよかった訳です。 英文字26種の大文字、小文字、特殊文字で、計63で英文字文化は よかったわけで、日本では、それに約50文字のカタカナを使うために、 シフトコードという方式を編み出したわけです。 それが、一文字8ビットになり、JISやEUCやいろんな方式が、 いろんなところで発展してきていた訳です。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.9

> SQLiteの難しさは、MySqlと違って、SQLite自身がコード設定の > 仕組みを持っていないことですね。 そこまで、つきつめられたら、WEB検索されると、同じ悩みを 持った人が書いていませんかね。 あるいは、別立てで、絞った内容で質問を立ててみては。 こちらは、アプリケーションの結果だけで判断して、 ファイルダンプを取って、不具合をプログラムで変換して しまう方なのでこれ以上は、案としては、出てきませんね。 コード変換も、いろいろプログラムによって異なっていますので、 例えば、改行指示方法だけでも、いろんなやり方で改行指示コード がありますからね。 やはり何かを基本としておく必要がありそうな気もします。

tonbeisan
質問者

お礼

> そこまで、つきつめられたら、WEB検索されると、同じ悩みを 持った人が書いていませんかね。 それがですね、ここに質問するまでに 色々なところで質問しているんですけどね。(笑  MySqlの情報はネットでも市販本でも満ち溢れいているんですけれども、SQLiteについては量と質で劣っていることが今回の件でわかりました。ここのような質問サイトでも MySqlは独立にスレッドが立てられていますが、SQLiteはない。ということで、質問しても なかなか満足のいく答えが得られないのが実情だと思います。 > もう少し詳しく書くと、ハードウェアとソフトウェアの間に、 >ファームウェアというのがあり、ここでコードの一括管理 >されています。ここで規定されているのです。 >Linuxの世界では、シフトJISコードは使用しないで、EUCとか、 UTF-8とか、JISを使います。 >このとき、そのOS毎に基本となるコード設定を、ファームウェアで、 >規定しています。 >このため、ここから先は、このコードを基本とするといった関所が >あると思ってください。 おそらく、上記にご指摘された部分が肝なんでしょうね。 ファームウェアというのをコントロールできれば、windowsの基準コードである shift-jisを utf_8に変更できるということなんでしょうか。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.8

多分、まだご理解いただいていないと思います。 前に記載した、 > コマンドプロンプト文字コード指定出力 >​http://www40.atwiki.jp/madcap/pages/71.html​ は、出力するためのコード変換テーブルの開始アドレスを 指定するものです。 よって、typeコマンドで、ファイルを指定して、その中に入っている シフトJISコード以外のコードを、シフトJISコードに変換して、 画面上に出しているだけなのです。 そこで、これを指定してあげれば、入力できるものと考えて おられるようです。 ここが間違いの元なのです。 あくまでも、パソコンで扱えるコードは、シフトJISコードだけ なのです。 そのため、貴殿が示された、 > http://www6.ocn.ne.jp/~trapeze/001.jpg​ を、見る限り、満足に日本語入力もできないし、キーコントロールも できなくなったと思います。 なぜかといいますと、英文字だけは、シフトJISコードと、utf_8コード は対応できているので表示できます。 しかしそれ以外は、対応していないため、何もできないのです。 全ては、パソコン上では、シフトJISということです。 もう少し詳しく書くと、ハードウェアとソフトウェアの間に、 ファームウェアというのがあり、ここでコードの一括管理 されています。ここで規定されているのです。 Linuxの世界では、シフトJISコードは使用しないで、EUCとか、 UTF-8とか、JISを使います。 このとき、そのOS毎に基本となるコード設定を、ファームウェアで、 規定しています。 このため、ここから先は、このコードを基本とするといった関所が あると思ってください。

tonbeisan
質問者

補足

yakan9さま 貴重な書き込み ありがとうございます。 > 多分、まだご理解いただいていないと思います。 まったくそうなんですよね。 でも 深い感じがしますね。もっと勉強しないという思いと、あまりその分野に深入りするとまずいかなという思いの両方あるんですけどね。(笑 とにかく SQLiteのdatabaseを utf-8 で使えればいいということで、その点のみに限定している調べているんですけど、そこを突破しようとすると中々壁があるようですね。databaseとしては、MySql を問題なく使えているので、しばらくはSQLiteは諦めて、MySqlでやっていこうと思います。まあ、これで問題ないですからね。でも、ファームウェアの話、へーっという感じですね。こんな風になっているのかという新鮮な驚きがありました。それと、Linuxのほうがこういう場合 柔軟性があっていいですね。うらやましいです。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.7

すべてのファイルを、nkfプログラムを通して、統一した制御コード で管理するとよいと思います。 > phpはutf_8に設定しているので、command promptで入力した > ものはShift-JSで入力されるのでこのように文字化けすると > いうことでした。 > ならば、command promptで入力するものを utf_8で行えばいいと > いうことで、いろいろとやっているのですが、中々問題が > 解決せずに今に至っているという次第です。 これは、制御コードの不統一から出た問題で、今まで書いてきた ことを理解してもらえれば、解決の糸口にはなるかと思います。

tonbeisan
質問者

お礼

よくよくみてみたら、nkfファイルをダウンロードしていました。もうだいぶ前で、全く使っていなかったのだす。忘れていました。nkfを使って、SQLiteのdatabaseの中身を utf_8に変換してみました。それで、phpで表示させたら、今度はnot encrypted or no database という趣旨のメッセージが出てしまいました。SQLiteの難しさは、MySqlと違って、SQLite自身がコード設定の仕組みを持っていないことですね。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.6

一般的に、1バイト文字から、2バイト文字に変わる部分で、 制御コードというものを使います。 この制御コードが、出力したプログラムにより異なるのです。 この異なったことを全て把握して(プログラムでチェックして)、 統一して出力するプログラムを作ればよいわけです。 制御コードを1バイトでヨシとしているものと、2バイトで表さないと だめといったことで、文字化けしているという、いたって単純な 問題なのです。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.5

ファイルの中を、テキスト文字だけでは、非常に曖昧です。 そこで、ファイルの中身をどう書かれているのかで、検証します。 その表示方法は、8進表示、16進表示させることを、俗に、 オクタルダンプ、ヘキサデシマルダンプとよんでいます。 コントロールのためのコントロールコードを一文字分入れただけでも、 それ以後の2バイト文字の日本語コードに狂いが生じます。 その規則性を突き止めるために、ダンプは必要なのです。 その規則性を突き詰めて、一般に対応できるように、誰でも 使えるように、改良を加えたプログラムが提供されているわけです。 それが、nkfというプログラムです。 ご自分で、これら不具合が出る部分をプログラムを作って改良すれば よいのですが、そこまでやる時間と、技術力を持ち合わせて いなければ、nkfという便利なプログラムを使うべきです。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.4

どこまで検証したのかですが、 > 日本語の文字がどうしても受け付けられません この意味していることを、具体的に書かないと、分かりません。 受け付けられないとは、どんなメッセージか、 ファイルのヘキサダンプとかで検証されたのか、 全く情報開示がなければ、これ以上は。

tonbeisan
質問者

補足

yakan9さま、たびたびの投稿、大変ありがたいです。 たしかに「受け付けられない」というのは曖昧な表現でした。「受け付けられない」というのは、 日本語の文字の部分が下記のように文字化けするという意味でした。 http://www6.ocn.ne.jp/~trapeze/001.jpg command prompt上で上記のように 65001(= utf_8)に変換して、日本語の文字を入力するとその部分が文字化けしてしまう ということです。 ファイルのヘキサダンプ というのは、よりわかりません。初心者なもので。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.3

下記は参考になりませんか。 コマンドプロンプト文字コード指定出力 http://www40.atwiki.jp/madcap/pages/71.html http://d.hatena.ne.jp/perlcodesample/20080706/1215291523 WEBで、「chcp 65001 コマンドプロンプト 」キーで検索すると、 このほかたくさん出てきますけど。

tonbeisan
質問者

補足

yakan9さま、ご解答ありがとうございます。 このページは私も見ています。残念ながらこの通りにはなりませんでした。なぜこの通りにはならないのかということも問題ですが。 すでに一週間ほどこの文字化けの件であれあれやってきました。そもそもの始まりは、SQLiteのdatabaseを作成して、それをphpでデータ表示するときに文字化けするということでした。 http://www6.ocn.ne.jp/~trapeze/02.jpg   このようになってしまいます。phpはutf_8に設定しているので、command promptで入力したものはShift-JSで入力されるのでこのように文字化けするということでした。ならば、command promptで入力するものを utf_8で行えばいいということで、いろいろとやっているのですが、中々問題が解決せずに今に至っているという次第です。

関連するQ&A