ASCII only allows a set of 256 characters to be used for alphanumeric characters & note the size of byte 8 ones and zeros!, in 0-1 terminology, As long as Chineese, Korean, Japanese language have special characters means that you need more than 256 and therefore more than one byte of space- you need multibyte character unicode based encodings such as utf-8, dealing with multibyte characters is slightly different with normal ones, because functions like substr( ) and strtoupper( ) except preciesly one byte per character and will corrupt a multibyte string. instead you should use a multibyte equivalents of these functions, such as mb_strtoupper( ), mb_ereg_match( ) mb_strlen( ), here the parameters are the same as their original exept that most accept an optional extra parameter to force specific encoding....
there is a special php.ini setting you can change : mbstring.func_overload. by default this is set to 0, wich means functions behave as you would expect, if you change it to 1 mail( ) function gets rerouted to the mb_send-mail( ) function, same when you set it to 2 all the functions starting with "str" gets rerouted for multibyte!... 4 all the "ereg" functions get rerouted. if you combine all ie:... 1(mail) + 2(str) + 4(ereg) ... set 7 to overload everything!.