文字コード

難しいし、他言語はTもよく知らない為、指南もしにくいので後回しでいいです。

文字コードとは

文字コードとエンコーディングとcharsetについてより複雑な説明
参照:「いいから俺文字コード」シリーズ

Java

Javaにおいては、文字を扱うクラスや型(String, StringBuffer, char)は、すべて UTF-16 で符号化されている。
他の文字コードと相互変換する場合は、byte[] 型を通す。
System.out.println(System.getProperty("file.encoding")); //MS932
String str = "テスト";
byte[] codes = str.getBytes(); //プラットフォーム別(※実行時の環境変数か何かで決定される。なんだっけ?)
codes = str.getBytes("MS932"); //コード名称明記
str = new String(codes, "MS932"); //byte[] から char[] に変換。
System.out.println("codes:"+codes); //byteコードなので出鱈目に見える
System.out.println("REcode:"+str); //REcode:テスト
  • 変換テーブルは JRE/JVM に内蔵される(※のか?)
    • eclipseで文字コードを設定できます。

PHP

デフォルトのエンコーディングを変更する場合はphp.iniの1198行目あたりにある記述を書き換えます
mbstring.internal_encoding = SJIS
エンコーディング
mb_convert_encoding関数を使用できます。
$str = "元になっている文字列";
print($str."<br>"); //もとになっている文字列
$str = mb_convert_encoding($str, "UTF-8", "auto");
print($str); //蜈�↓縺ェ縺」縺ヲ縺�k譁�ュ怜�
  • PHPでもヘッダーを使って文字コードの記述が出来ます。
<?php
header("Content-Type: text/html; charset=SJIS");
echo "<h1>インデックス</h1>";
php?>
ただし、ヘッダーより前に構文が書けなくなるので、html記述などが出来なくなります。
参照:PHPマニュアル-ネットワーク関数

javascript

htmlファイルのmetaタグ内部につけることで宣言可能です。
バージョンやドキュメント宣言とは分けて書くことが出来ます。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>
<p>Test</p>
</body>
</html>
さらに内部エンコーディングはUTF-16でできており、文字コード変換用にescape関数、unescape関数が存在します。
var str = "\u3042\u3044\u3046\u3048\u304a";
var str2 = "あいうえお";
document.write(escape("\u3042\u3044\u3046\u3048\u304a")); //%u3042%u3044%u3046%u3048%u304A
document.write(unescape("\u3042\u3044\u3046\u3048\u304a")); //あいうえお
document.write(str); //「あいうえお」と出ましたが環境で変化するかもしれません
document.write(escape(str2)); //\u3042\u3044\u3046\u3048\u304a
document.write(unescape(str2)); //あいうえお

タグ:

+ タグ編集
  • タグ:
最終更新:2013年12月09日 13:06