同じrubyスクリプトを、MacOSとWindowsで動かしたいと思っています。
日本語が正常に表示されないのでいろいろやっていく内に、解せないことがあります。
MacOS上で
puts($KCODE)
puts("テスト")
という2行のファイルを、UTF-8、及び S_JISで保存してそれぞれ -Ku -Ks オプションをつけて実行させてみると、S_JISの方は正しく表示されません。
$KCODEの値は正しく SJIS になっていました。
Windwsで同じファイルを走らせると、S_JISの方は正しく表示されますが、UTF-8 の方が正しく表示されません。
rubyのバージョンは1.8.7、エディタは mi を使用しました。
なにか勘違いしてるのでしょうか?
No.1ベストアンサー
- 回答日時:
Windowsのコマンドプロンプトは、デフォルト設定ですと、Shift JISのテキストデータを正しく表示できますが、UTF-8テキストは表示できません。
Mac OS Xのターミナルは、デフォルト設定ですと、UTF-8のテキストデータを正しく表示できますが、Shift JISテキストは表示できません。
――というところは知っているように見受けられますが、具体的になにが解せないのでしょう?
解せない内容を具体的(どういう挙動を示すことを想定しているとか。)に補足してみては。
>Windowsのコマンドプロンプトは、デフォルト設定ですと、Shift JISのテキストデータを正しく表示できますが、UTF-8テキストは表示できません。
>Mac OS Xのターミナルは、デフォルト設定ですと、UTF-8のテキストデータを正しく表示できますが、Shift JISテキストは表示できません。
すみません。全く知りませんでした。
単純にソースがどのコードでかかれているか、-Kオプション等で示せばうまくいくもと思ってました。
No.3
- 回答日時:
実行はターミナル.appからでしょうか?
それだと、SJISを正しく表示させるには、ターミナルの設定を変更してShift_JISに設定する必要がありますよ。
KCODEは、スクリプトや入出力がそのコードだと宣言するだけのもので、例えば、Shift_JISで書かれたものを端末に合せてUTF-8に変換してくれる、とか言うものではないです。
そうです、ターミナル.app です。
ターミナル側の問題もあるのですね。
なんだか半分くらいしか分かりませんが、スクリプのコードだけが分かれば -K オプション等で指定できるもの、すべてそのままで表示されるのかと思ってました。
私の理解不足ですね。ありがとうございました。
No.2
- 回答日時:
自分の認識だと、元々日本語WindowsはShift_JIS系統のWindows-31J(MS/CP932等とも)を想定する動作になっています。
今のMacも含むUNIX系だとEUC-JPやUTF-8が普通ですよね
最近だとメモ帳も若干対応コード増えましたが、コマンドプロンプトでのこの辺の扱いは悪化しているようにすら感じます。
Windowsのコマンドプロンプトでもchcpを使えば文字コード変更できますが、その後使いづらかったりするので個人的にはお勧めできません。
となると、パッと思いつく選択肢はこの辺です
・環境によってコード側の文字コード変換しつつ使う
・Windowsの時はコマンドプロンプトを使わず、その辺吸収してくれるIDE(SciTE / NetBeans 等)を使う
・1.8から1.9に乗り換え、内部文字コード指定しながら使う
・基本Shift-JIS運用にして、UNIX系ではCUIの文字コードを変更してから使う(環境変数LANGを「ja_JP.SJIS」等に)
・Windowsの時はcygwin上で走らせる
・kconv等で強制変換する
という感じで、自分にはあまり綺麗な解決策を挙げられません。
ちなみに、個人的に採用しているのはコード側の文字コード変換か、IDEの利用です。
この辺綺麗に解消できる手段があれば、業務上Windowsを捨てられない身として自分も把握しておきたいのですが。。。
<おまけ>
余談ですが、このへんの動きをもってRubyのWindows対応が弱いとは言えないと思います。
他の言語でも直面しそうな話ですし、むしろWindowsに非があるような・・・
ありがとうございます。
私、ちょっと簡単に考えすぎてたみたいです。
ご指導頂いた内容、半分くらいしか現状では理解できてませんが、調べ直してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Mac OS MacOSのLaunchAgentsってなんですか?使い方など教えてください。 前の質問でLaunc 1 2022/04/24 02:06
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- Mac OS MacのFinderでmovファイルのサムネイルが表示されないのと、クイックルックが出来ません。 こ 3 2023/07/24 18:40
- その他(ソフトウェア) powershell で出力したテキストファイルをvim で開くと文字化け 2 2023/01/11 21:39
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- Java VScodeのターミナルの文字化けについて 1 2022/09/27 22:19
- Mac OS macOS Mojave 1 2022/06/10 18:39
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
やり 直し
-
(再質問)エクセルのマクロボ...
-
パソコンのスクリーンセーバー...
-
1、Rstudioで回帰直線を求める...
-
pandasでsqlite3にテーブル作成...
-
pythonエラー
-
パイソンのクラスについて
-
WIN11にオフイスを複数入れるこ...
-
教えてください
-
パイソンエラーについて
-
プログラミングについてです。...
-
初心者プログラミング
-
Ruby on Railsでサーバーを立ち...
-
英数字を含む文字列(0-9,A-Z)...
-
ruby
-
クリスタルレポートで困ってい...
-
VBA
-
パイソンプログラミング
-
パイソンでテキストファイルが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby interpreter (CUI) 2.2.3 ...
-
RubyでNo such file or directo...
-
Rubyでpdfファイルを読み込む方法
-
Rubyでローカルにあるファイル...
-
システムエンジニアの適正について
-
小文字wと大文字Wの区別
-
Ruby / passenger のインストー...
-
プログラミング講師はまだ需要...
-
VB.NETで階乗を求めるプログラ...
-
初心者 パイソンプログラム
-
CかC++どちらを覚えるべきですか?
-
web上のhtmlファイルから文字デ...
-
ruby.exeとrubyw.exeに違いがあ..
-
バーコードのチェックデジット...
-
プログラミング言語で大文字と...
-
ruby 全角ハイフンを半角ハイフ...
-
rubyのevalのエラーを検知したい
-
Rubyの.soについて
-
We're sorry, but something we...
-
gem install railsで「NameErr...
おすすめ情報