ホルン吹きでSEなブログ

趣味でホルン吹き、仕事でSEやってます

文字コードの話

f:id:t910827:20170828204705p:plain:w400

こんにちは。
タイトルについて。

現場でWindowsLinux環境を併用しており、
文字コード変えるだけで処理速度が劇的に変わったのでメモメモ。

文字コードとは?

コンピュータが読み取る文字のことです。
一言でコンピュータといっても、日本、アメリカ、インドのように、色んな種類のコンピュータがあります。

こいつ達がそれぞれ読みやすい母国語といったイメージでしょうか。

f:id:t910827:20170906005408p:plain:w400

どんな種類があるの?

ググったらいっぱい出ました。

文字コード - Wikipedia

知ってるものだけ挙げます。

Unicode

「あいうえお」など、あらかじめ約束(定義)されている文字の集合体です。

JavaXMLを作成する際、デフォルトで使われてたりします。

絵文字なんかでよく見るやつっすね。
🌍 ←こんなのもUnicodeです。

S-JIS

かの有名なマイクロソフトが定義したコードです。
WindowsMacでデフォルト使用されます。

平仮名や漢字を2バイトで表現します。(全角文字
半角英数字やカナは1バイトで表現されます。(ハンカクモジ)

全角、半角を判断するメソッドを作成することで、バイト数、文字数を数えることができます。

UTF-8

Linuxのデフォルトです。
S-JISと違い、日本語は2バイトだったり3バイトだったりバラけます。だいたい3バイトだけどね。

日本語だけで書かれてるファイルの場合、S-JISの1.5倍の容量になります。

なんでいっぱい種類あるの?

『そんなん、一つに統合してればいいじゃん。めんどくさいな。』

エンジニアなら誰しも思うハズ!ハズである!
調べてみた結果、こんな回答っぽいです。

『コンピュータが発展する過程でいろいろあったから統合できなかったの!』

f:id:t910827:20170906005502j:plain:w400

人間と同じようなもんスね。
全世界で英語だけ使ってればラクなんでしょうけど、今さら不可能ですし。

コンピュータにもいろんな人種(機種?)があるということ!

仕事で。

今の現場にて、ストアドをせこせこ作成中でして。

www.hornengineer.site

こんな手順でやってたんです。

1.Windows上のサクラエディタでコーディング
2.LinuxからSQLPlusにログインしてコピペ実行

Windows上で作成しているので、S-JISで作成されたコードを、UTF-8を欲しがってるLinuxに無理やり食わせてたんですね。

健気ないい子(PC)なので、S-JISでも読み込んでくれてたのです。1回読むのに10秒弱かかっていました。

数回やってると、文字コードを変えていないことに気づき、文字コードUTF-8にしてあげると
あら不思議!
1秒で読み込んでくれるようになりました!

f:id:t910827:20170906010146p:plain:w400

それまでは必死にS-JISを解読してくれてたんだなあと思うと、PCが可愛く見えました。

あれ?見えませんか?( ゚Д゚)