文字コード、改行について


Kob  2003-03-20 08:55:35  No: 3190

文字コードと改行についてなのですが、

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 ということなんでしょうか?

よろしくお願いします。


たかみちえ  URL  2003-03-20 09:58:25  No: 3191

> 文字コード、改行変換機能を利用している人というのは、
> どういった方なのでしょうか?
  む、なかなか難しい質問ですね^^;
  でも興味あります。

  わたしがサポートに参加させてもらっている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だけの改行も改行と認めるようになってる…という話を聞いた気がします。
  結局関数を通さないといけないかもしれませんけど。


たかみちえ  URL  2003-03-20 10:00:41  No: 3192

引用内の?は単なる文字化けですので、おきになさらず。


にしの  2003-03-21 01:10:46  No: 3193

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間でテキストファイルのやりとりがある場合です。


Kob  2003-03-25 10:19:51  No: 3194

たかみちえさん、にしのさん、どうもありがとうございます。
返信が遅れてすみません。

ということは、基本的には、複数の OS 間での
やり取りを考慮する場合にだけ、文字コード、及び改行に
配慮しなければならないというわけなんですね。

しかし、文字コードについて調べてみると、
なぜに、こんなに沢山の文字コードが存在するのか意味が分かりません。
(調べる程、わけが分からなくなります。
それぞれの文字コードが、どのような仕組みになっているのかではなく、
なぜ、その文字コードが存在するのかがです)

もう少し調べてみようと思います。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加