文字コードと改行についてなのですが、
Windows では Shift_JIS, CRLF
Unix では、EUC, LF
Mac では Shift_JIS(?), CR
というようになっているようなのですが、
秀丸やその他の代表的なエディタでは、
文字コード、及び改行を変換する事が出来ますよね。
普段 Windows を使用している場合に、
文字コード、改行変換機能を利用している人というのは、
どういった方なのでしょうか?
例えば、家では Windows それ以外では Unix を
使用している方などが、Windows, Unix 両方で、
作業を行う必要がある方が利用しているのでしょうか。
また、Windows を利用している方が
Shift_JIS, CRLF を利用せずに、
他の文字コードや改行を利用している方というのは
実際にいるのでしょうか?
まとまりのない質問になっていますが、
よろしくお願いお願いいたします。
(これだけだと、殆ど Delphi と関係ありませんので、
以下の質問もお願いします。)
var
s: string;
begin
s := 'Helloこんにちは';
end;
上記の 'Helloこんにちは' は文字コードでいうと、
Shift_JIS ということなんでしょうか?
よろしくお願いします。
> 文字コード、改行変換機能を利用している人というのは、
> どういった方なのでしょうか?
む、なかなか難しい質問ですね^^;
でも興味あります。
わたしがサポートに参加させてもらっているHTMLエディタの要望掲示板に、
ちょくちょく"他の文字コードのファイルを読みたい"という旨の要望があるのですけど…。
(そんなもの、何に使うの?)とか、おもってしまいます。
さて、ここまではいいとして、実際の使い方は…。
まず、テキストエディタの場合、ブラウザからソースコードビューアとして使う場合は、必要になりますよね。
たとえば、IEではレジストリをいじることによって、OperaやNetscapeでは、設定ダイアログから、ソースビューア用エディタを指定できます。
それで自作ソフトを指定したとき、文字コード変換機能がないと、
他のOSで作ったりしたページのソースが読めませんね。
あとは
> 使用している方などが、Windows,?Unix?両方で、
> 作業を行う必要がある方が利用しているのでしょうか。
こういう使用例もあるとおもいますけど、
たとえば"Opera"という海外製ブラウザでは、設定ファイルなどがすべて"UTF-8"という文字コードになっています。
これを編集するには(このブラウザ、iniファイルをじかに編集することでできることがとても多いので、そういう機会が多いんです)、当然、
文字コード変換に対応したテキストエディタが必要になります。
他にも、そういうことはあるでしょう。
あとは、わたしは友達にMacユーザーがいるんですけど、
その人から送られてくるファイルの多くが、CRだけ(文字コードはShiftJISです)でした。
以上のようなときに、文字コード変換が必要になるんじゃないでしょうか?
> 上記の?'Helloこんにちは'?は文字コードでいうと、
> Shift_JIS?ということなんでしょうか?
"こんにちは"は、ShiftJISということになります。
英文は、どの文字コードでもおんなじだったはずなので、どうともいえません。
この辺は確か、とほほのWWW入門(http://tohoho.wakusei.ne.jp/www.htm)のアラカルトのページに、
詳しくあったとおもうので、興味があればぜひ一読を。
ちなみにDelphiはKylixのことを考慮してか、
LFだけの改行も改行と認めるようになってる…という話を聞いた気がします。
結局関数を通さないといけないかもしれませんけど。
引用内の?は単なる文字化けですので、おきになさらず。
stringならばShiftJIS。WideStringならばUnicodeです。
基本的に、Windowsのみであれば、ShiftJISだけで済むと思います。
ただ、メールではShiftJISは使えません。JISのみ正しく送れます。SJIS,EUCともに8ビット文字を含むので、メールが正しく送れるかどうかは、中継するサーバに依存します。
ShiftJISは、特にエスケープせずに、通常のASCIIと一緒に表せす。ただし、2バイト文字の2バイト目に、$00〜$7Fの範囲にある文字が含まれるので注意が必要です。
EUCは、2バイト文字の1バイト目も2バイト目も8bit($80〜$FF)なので、判別が簡単です。もちろん、1バイト文字との混合も可能です。ただし、2バイト文字の1バイト目と2バイト目が同じ範囲のため、それのどちらかを判断することはできません。
JISは、全て7ビット文字で表されます。エスケープされた部分は必ずその種類と決定しますが、特定の場所を見るだけでは漢字なのか1バイト英数なのかわかりません。頭から解析する必要があります。
改行コードは、もしかしたらバイト数が少なくなるという理由でCRのみ、またはLFのみを使用している人がいるかもしれません。
通常、文字コードや改行コードを複数扱うのは、(Webサーバを含む)複数のOS間でテキストファイルのやりとりがある場合です。
たかみちえさん、にしのさん、どうもありがとうございます。
返信が遅れてすみません。
ということは、基本的には、複数の OS 間での
やり取りを考慮する場合にだけ、文字コード、及び改行に
配慮しなければならないというわけなんですね。
しかし、文字コードについて調べてみると、
なぜに、こんなに沢山の文字コードが存在するのか意味が分かりません。
(調べる程、わけが分からなくなります。
それぞれの文字コードが、どのような仕組みになっているのかではなく、
なぜ、その文字コードが存在するのかがです)
もう少し調べてみようと思います。ありがとうございました。
ツイート | ![]() |