文字コード

13区フォントの違い

JISコードの9〜15区の未定義領域にはOSが独自の拡張文字を割り当てていることで有名で、特に13区についてはWindowsでは「まるいち」とか「ローマ数字」なんかを割り当てていて、MacOSXでは(日)になったり(特)になったりちょくちょくと痛い目にあっているわけですが昨日調べたいコードがあってATOKの文字パレットをみていたらなんと13区にWindowsと同じ文字が割り当てられていることに気がつきました!

ヒラギノコード表

Smultron 文字コード判定 2022-JPの追加。

メール関連のテキストを扱う必要があってSmultronでテキストを開こうとしたら予想どおりの文字化け。これまで文字コードの判定には何度か手を入れてきたけれど、ISO-2022-JPは特に何もしてこなかったので、今回はISO-2022-JP対応コードを書いてみました。

Smultron本体のエンコード判定方法の流れはv10.4で追加された新しいメソッド、NSString stringWithContentsOfFile:usedEncoding error:を使うように変わっていて、ここで変換してうまくいかなければguessEncodingFromData:textDataを使うように変更になっていますが、このメソッドSJIS/EUCがダメでちょっとつかえません。

string = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:&error];
if (error != nil || string == nil) {
  if (textData == nil) {
    textData = [[NSData alloc] initWithContentsOfFile:path];
  }
  encoding = [SMLText guessEncodingFromData:textData];
  if (encoding == 0 || encoding == -1) {
    encoding = [[SMLDefaults valueForKey:@"EncodingsPopUp"] integerValue];
  }
}

なので、このメソッドの使用を後回しにしてこれまでどおりguessEncodingFromData:textDataを優先してエンコードを判定、まず判定したエンコードを用いて変換してみる。それでダメな場合にこちらを使うという流れに修正しました。

コンテンツの配信