���㤢����
length�ؿ���ʸ�����Ĺ������� - perl�鿴��BLOG - Hatena::Group::Perl���ܸ��ʸ���������Τ˵�᤿����硢use encoding����ꤹ��
use encoding;
�ϡ�jperl�ʤɡ����Ĥ�¸�ߤ���L10N���줿perl�Ѥ˽񤫤줿�쥬����������ץȤ򡢥����perl��ư�����Ȥ��Τ���Τ��ޤ��ʤ��Ǥ�������������Ū�����Ѥ��٤��ǤϤ���ޤ���
���Τ�����Τ��Ȥϡ�����
�Ǥ�ñ¤¤¤ï¿½ï¿½Î¤Ç¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ê¤ï¿½ï¿½È¤Ê¤Î¤Ç¤Þ¤ï¿½ï¿½ñ¤¤Þ¤ï¿½ï¿½ï¿½
������ץȤ�UTF-8�ǽñ¤¡ï¿½use utf8;
����
�Τ������Perl�Τ������Ǥ���
#!/usr/bin/perl use strict; use warnings; { my $string = "dankogai������"; printf "length('%s') == %d\n", $string, length($string); } { use utf8; my $string = "dankogai������"; printf "length('%s') == %d\n", $string, length($string); }
���Ƥ��̤ꡢutf8
�ץ饰�ޤ� lexical scope �Ǹ����ޤ���encoding
�ץ饰�ޤǤϤ����ϹԤ��ޤ���
Wide character in print
�Ȥ��� warning ���ФƤ��ޤ���������ϡ�UTF-8�Ȥ��ư����Ƥ���ʸ����򡢥Х��ȥ��ȥ꡼��Ȥ��ư��äƤ��ޤ��פȤ����ٹ�Ǥ��������ä�����ˤϡ�STDOUT��UTF-8���ȥ꡼��Ǥ��뤳�Ȥ򶵤���ɬ�פ�����ޤ���
���ȡ�utf8
�ץ饰�ޤ������Ƥ�����֤ǡ�ʸ���󤬲�ʸ�����ǤϤʤ�ʸ���󤬲��Х��Ȥ����Τ뤿��ˤϡ�bytes::length()
��Ȥ��ޤ���
�ʾ��դޤ�������ץ뤬�ʲ��Ǥ���
#!/usr/bin/perl use strict; use warnings; use utf8; use bytes (); # () ��˺��ʤ� my $string = "dankogai������"; binmode STDOUT, ':utf8'; # STDOUT��UTF-8���ȥ꡼�� printf "length('%s') == %d\n", $string, length($string); printf "bytes::length('%s') == %d\n", $string, bytes::length($string);
UTF-8�ʳ���ʸ�������ɤϡ����������뤫�Х�����Ȥ���ɽ���������Encode�ǽ�������
����Ū�ʤ�����ϰ����񤤤��Ȥ���Ǥ���
�ɤ����Ƥ⳰�����������ʤ����ˤϡ�����Ū�˥Х�����Ȥ���ɽ�����ޤ��礦���ʲ��Ϥ�����Ǥ���
#!/usr/bin/perl use strict; use warnings; use Encode; my $bytes = "\x95\x5C"; # ��ɽ�פ�Shift_JIS�� my $string = decode "sjis", $bytes; printf "length(\$string) == %d\n", length($string); printf "length(\$bytes) == %d\n", length($bytes);
�ʤ��������٤����Ȥ����ȡ�Shift_JIS��BIG-5�ʤɤǤϡ�2�Х���ʸ�����ASCII�ε��椬�����äƤ��ޤ����Ȥ����뤫��Ǥ����ʲ��Υ����ɤ�Shift_JIS����¸���Ƴ�ǧ���ƤߤƤ���������
#!/usr/bin/perl use strict; use warnings; use Encode; my $bytes = "ɽ"; my $string = decode "sjis", $bytes; printf "length(\$string) == %d\n", length($string); printf "length(\$bytes) == %d\n", length($bytes);
����ϡ�ɽ��SJISɽ����\x95\x5C
����Х����ܤ��Хå�����å���ʤΤǡ�"ɽ"
��"\x95\""
�Ȳ�ᤵ��Ƥ��ޤ�����Ǥ���EUC�ǤϤ������������ȯ�����ʤ��ΤǤ�����������������Τ狼��ˤ����ȼ�֤�ͤ����顢�����ʥ�����ץȤϤϤ��ᤫ��UTF-8�ǽ񤯤Τ�����Ū�˰��ֳڤ���ˡ�Ȥ������Ȥˤʤ�ޤ���
use encoding;
�ǿ����ʥ�����ץȤ�񤫤ʤ�
�Ȥ����櫓������ʤ��ȤʤΤ����ٸ����ȡ�use encoding;
�Ϥɤ����Ƥ�줤������ץȤ�ư���������Ȥ������˻Ȥ��������ʥ�����ץȤ�UTF-8�ǽ񤯤褦�ˤ��ޤ��礦�������ˤʤ�뤫�Ϥ��Ƥ������Թ��ˤ�����Ψ�Ϥ��äȲ�����ޤ���
Dan the Maintainer Thereof
���Υ֥����˥����Ȥ���ˤ�����������ɬ�פǤ���
��������������
���ε����ˤϵ��ĥ桼�����������Ȥ��Ǥ��ޤ���