camel

����ϤϤä�����ä�Ǻ�ޤ������Ǥ�����Ƚ�꤬ۣ��ʾ��Ϥ��λݤ򤭤�������Τ���Τ�Better Practice�ǤϤʤ����Ȼפ��ޤ���

Matz�ˤä�(2007-01-03)
�긵��calki��UTF-8�Ρ֡ա�������ʸ��(U+8BB)��ޤ२��ȥ꤬ʸ����������Τǡ� nkf-utf8�Υ������򸫤Ƥߤ��� �ɤ��⼫ưȽ���ͥ���̤�EUC-JP,SJIS,JIS,UTF-8�Ǹ��ꤵ��Ƥ��ơ� EUC���ϰ���˼��ޤ�ʸ����Ϥ��٤�EUC-JP�Ȥߤʤ����ȤˤʤäƤ��롣 �ǡ�UTF-8�Ρ֡աפ�EUC-JP�Ρ�»�פ�Ʊ���Х�����ʤΤ���

�㤨�С��ʲ���Ԥ��Ȥ˥�����Ƚ�ꤹ��ȡ��ʲ��Τ褦�ʷ�̤ˤʤ�ޤ���

son.utf8
»
»
»Â»
»Son
nkf-guess.rb
#!/usr/local/bin/ruby

require 'nkf'

CODES = {
  NKF::JIS      => "JIS",
  NKF::EUC      => "EUC",
  NKF::SJIS     => "SJIS",
  NKF::BINARY   => "BINARY",
  NKF::UNKNOWN  => "UNKNOWN(ASCII)",
  NKF::UTF8     => "UTF8",
}

while file = ARGV.shift
  open(file).read.each do |l|
    puts CODES[ NKF.guess(l) ]
  end
end
% ruby nkf-guess.rb son.utf8
EUC
UTF8
UTF8
EUC

�¤Ϥ������Ǥϡ�Jcode.pm��Ʊ���Ǥ���

% perl -MJcode -nle 'print Jcode->new($_)->icode' son.utf8 
euc-jp
utf8
utf8
euc-jp

Encode::Guess�Ǥϡ��⤦��������������򤭤���Ȥ��Ƥ��ޤ���

encode-guess.pl
use strict;
use warnings;
use Encode::Guess;
$\ = "\n";
while(<>){
    my $enc = guess_encoding($_, qw/euc-jp shiftjis 7bit-jis/);
    print ref $enc ? $enc->name : $enc;
}
% perl encode-guess.pl son.utf8 
shiftjis or euc-jp or utf8
utf8
utf8
shiftjis or euc-jp or utf8

���Ƥ��̤ꡢȽ���ۣ�椵��̵���Ф����ϡ�guess_encoding()��ʸ���������Ѵ����֥������Ȥ��֤��ΤǤ�����ۣ��ʾ��ˤϤ��λݤ�ʸ������֤��ޤ��������die()�����ʤ���㳰���ꤲ�Ƥ����ΤǤ�������������ܤ���ƤȤ��륢�������Υ桼�������������ʥ֡����󥰤��Фƺ��λ��ͤˤʤäƤ��ޤ���

���ä����Ȥ��ꡢ������ʸ��������Ƚ��Ȥ����Τ�����Ū�ˤ��Բ�ǽ�ʤΤǤ���������Ǥ⤤���Ĥ����ܤȤʤ�ؿˤϤ���Ȼפ��ޤ���

�᥿�ǡ�����إå����ʤɤ��������꤬����С���������Ѥ���
�㤨�С�HTTP�ʤ�Content-Type:��charset=��XML�ʤ������encoding=�ʤɡ�
Encode::Guess�Ϥ����ޤǤϤ�äƤ��ޤ��󡣤������������Ǥ��ä�Guess�ǤϤʤ��Τǡ�
���줬�狼��С������ҥ�Ȥˤ���
�㤨��ja�ʤ顢shiftjis,euc-jp,utf-8�����ˤ��롢�ʤɡ�
Encode::Guess�ϡ����Τ���Υե졼�������󶡤���Ȥ����ͤ��Ǥ���
Ƚ�꤬ۣ��ʾ�硢���λݤ����Τ�����Ȥߤ��Ѱդ���
NKF����Jcode.pm�ޤǡ��ָ�ŵŪ�פ����ܸ�ʸ���������Ѵ��ץ������˷礱�Ƥ����Τ������λ��ȤߤǤ�����̩�ˤ�Jcode.pm��Ƚ��κ���򥪥֥������������˳�Ǽ���Ƥ��ơ��������Ф�API�⤢��ΤǤ��������ޤ����Ѥ���Ƥ��ޤ����Ф���Encode::Guess�ξ�硢ۣ��ʾ���ۣ����ä������Τ⤷�ޤ��������Τޤޥ������Ѵ����褦�Ȥ���ȥ��顼�ˤʤ�ޤ���

����ˤ��Ƥ⡢ruby��ʸ���������Ѵ���ɸ�ब̤����NKF�Ȥ����Τ����äȹͤ���Τ��Ȼפ��ޤ���API��NKF(1)�भ�Ф��ΤޤޤǤ��ޤ��ruby�餷���ʤ��Ǥ�����

Rails + SQLServer�ǥ����꤬���󥿥å������顼�ʷ� @ 2006ǯ12�� @ ratio - rational - irrational @ IDM
Perl5�Ϥ衼�Ǥ��Ȥ��ʤ���Encode.pm�⤢�뤷���ޤ�����

��äȤ⡢���������ɤ�UTF-8�����줷�������ʤ��UCS(Unified Code Set)���餳���������ޤǼ��������礬���褿�Ȥ����Τ���¤ǡ�CSI(Code Set Independent)��ɸ�֤���ruby�Ȥ��ƤϤĤ餤�Ȥ������Ǥ⤳�����ä���ʤ�Ǥ�����ruby�ξ�硢���ۤȸ��¤Υ���åפ��Ǥ�������褦�ʵ������ޤ����ä�NKF���ڤ��ݤ�Ĥ���API�䡢ASCII�ʳ���ʸ����ƥ���ɽ������ɸ�൭ˡ���Ժߤ��ܤˤ���ȡ�

Dan the (En|J)code Maintainer