camel

いやあ、

を見たらむらむら作りたくなって、作ったらあっさりできちゃったという。

NAME
    Lingua::CJKV::Simplify - (Simplified|Traditional) Chinese Characters

SYNOPSIS
        use Lingua::CJKV::Simplify;
        my $cjkv = Lingua::CJKV::Simplify->new(
            "Dan,\x{5F3E},\x{5F48},\x{5F39}"
        );
        print $cjkv, $cjkv->simplifed, $cjkv->traditional;

DEMO

文字列
简体字
繁體字

我ながら、この手があったか、と感心しています。

お(楽|乐|樂)しみあれ!

(小飼弾|小饲弹|小飼彈|ダ㌆㌰㌑㌐イ)

DEMO Source:

Perl (server)

#!/usr/local/bin/perl
#
# $Id: cjkv_simptrad.cgi,v 0.1 2008/06/10 06:24:43 dankogai Exp dankogai $
#
use strict;
use warnings;
use blib './Lingua-CJKV-Simplify/trunk';
use Lingua::CJKV::Simplify;
use CGI;
use CGI::Carp qw/fatalsToBrowser/;
use Encode;
use URI::Escape;

my $q = CGI->new;
my ( $callback, $str ) = ( $ENV{PATH_INFO} =~ m{^/(.*?)/(.*)} );
die "No callback" unless $callback;
my $utf8 = decode_utf8(
    $str
    ? uri_unescape($str)
    : $q->param('s') || $q->param('str')
);
my $cjkv = Lingua::CJKV::Simplify->new($utf8);
my $obj  = {
    original    => $utf8,
    simplified  => $cjkv->simplified,
    traditional => $cjkv->traditional,
};

if ( $callback eq 'xml' ) {
    require XML::Simple;
    print
      "Content-Type: text/xml; charset=utf-8\n\n",
      XML::Simple::XMLout( $obj, NoAttr => 1 );
}
else {
    require JSON::Syck;
    print
      "Content-Type: application/x-javascript; charset=utf-8\n\n",
      "$callback(", JSON::Syck::Dump($obj), ");\n";
}

# __END__

HTML

<div style="border:outset 1px; padding:0.5em"><dl>
<dt>文字列</dt>
<dd><input id='src', type="text" value="日本語の弾は簡体字では&#x5F39;で繁体字では&#x5F48;" size="64"></dd>
<dd><input type="submit" value="&#x7B80;&#x7E41;" onclick="
cjkv.parse(document.getElementById('src').value)"></dd>
<dt>&#x7B80;体字</dt>
<dd id="simp"></dd>
<dt>&#x7E41;&#x9AD4;字</dt>
<dd id="trad"></dd>
</dl>
</div>

JavaScript

(function(){

var CJKV_SimpTrad = function(proxy, callback){
  this.proxy     = proxy || 'http://api.dan.co.jp/cjkv_simptrad';
  this.callback  = callback || 'jsonp';
  this.parse = function(str){
    var script = document.createElement('script'); 
    script.id = this.proxy + '/' + this.callback + '/' + encodeURIComponent(str);
    script.charset = 'UTF-8';
    script.src = script.id; 
    document.body.appendChild(script);
  };
  return this;
}

var $ = function(id){ return document.getElementById(id) };

cjkv = new CJKV_SimpTrad();

jsonp = function(json){
  $('simp').innerHTML = json.simplified;
  $('trad').innerHTML = json.traditional;
}

cjkv.parse($('src').value);

})()