Maison >développement back-end >tutoriel php >Méthode d'implémentation de génération aléatoire de caractères chinois en PHP
GB 2312-80 est le jeu de caractères chinois simplifié standard national de la Chine, le nom complet est « Jeu de caractères codés chinois pour l'échange d'informations · Jeu de base », publié par l'Administration d'État des normes de Chine et mis en œuvre le 1er mai 1981. Le codage GB2312 est populaire en Chine continentale ; Singapour et d'autres endroits utilisent également ce codage. Presque tous les systèmes chinois et logiciels internationaux en Chine continentale prennent en charge GB 2312.
La norme GB2312 contient un total de 6763 caractères chinois, dont 3755 caractères chinois de premier niveau et 3008 caractères chinois de deuxième niveau ; elle comprend également des lettres latines, des lettres grecques, des lettres hiragana et katakana japonaises ; Siri russe 682 caractères, y compris les lettres Er. L'émergence du GB2312 répond essentiellement aux besoins de traitement informatique des caractères chinois. Les caractères chinois qu'il contient couvrent 99,75 % de la fréquence d'utilisation en Chine continentale. Le GB2312 ne peut pas gérer les caractères rares qui apparaissent dans les noms de personnes, le chinois ancien, etc., ce qui a conduit à l'émergence des jeux de caractères chinois ultérieurs GBK et GB18030.
Dans GB2312, les caractères chinois collectés sont "partitionnés", et chaque zone contient 94 caractères/symboles chinois. Cette représentation est également appelée code de localisation.
Les zones 01 à 09 sont des symboles spéciaux.
Les zones 16 à 55 sont des caractères chinois de premier niveau, triés par pinyin.
Les zones 56 à 87 sont des caractères chinois de deuxième niveau, triés par radical/trait.
Les districts 10-15 et 88-94 ne sont pas codés. Par exemple, le caractère « ah » est le premier caractère chinois du GB2312 et son code de localisation est 1601.
Chaque caractère et symbole chinois est représenté par deux octets. Le premier octet est appelé « octet de poids fort » et le deuxième octet est appelé « octet de poids faible ». L'"octet de poids fort" utilise 0xA1 - 0xF7 (ajoutez 0xA0 à l'indicatif régional de 01 à 87) et "l'octet de poids faible" utilise 0xA1 - 0xFE (ajoutez 0xA0 à l'indicatif régional de 01 à 94). Étant donné que les caractères chinois de premier niveau commencent à partir de la zone 16, la plage des « octets de poids fort » de la zone de caractères chinois est 0xB0 - 0xF7, la plage des « octets de poids faible » est 0xA1 - 0xFE et les bits de code occupés sont 72 * 94 = 6768. . 5 des emplacements disponibles sont D7FA - D7FE. Par exemple, dans la plupart des programmes, le mot « Ah » sera stocké sur deux octets, 0xB0 (le premier octet) et 0xA1 (le deuxième octet). (Comparez avec l'indicatif régional : 0xB0 = 0xA0 + 16, 0xA1 = 0xA0 + 1).
La norme nationale GB 18030-2005 « Jeu de caractères codés chinois pour les technologies de l'information » est le dernier jeu de caractères de code interne de la République populaire de Chine. Elle est entièrement compatible avec GB 2312-1980, fondamentalement compatible avec GBK, et prend en charge GB 13 000 et tous les caractères chinois unifiés dans Unicode incluent un total de 70 244 caractères chinois. La version actuelle a été publiée par l'Administration d'État pour la supervision et l'inspection de la qualité et le Comité national chinois d'administration de la normalisation le 8 novembre 2005 et a été mise en œuvre le 1er mai 2006. Il s'agit d'une norme obligatoire prise en charge par tous les produits logiciels en Chine.
function getChar($num) // $num为生成汉字的数量 { $b = ''; for ($i=0; $i<$num; $i++) { // 使用chr()函数拼接双字节汉字,前一个chr()为高位字节,后一个为低位字节 $a = chr(mt_rand(0xB0,0xD0)).chr(mt_rand(0xA1, 0xF0)); // 转码 $b .= iconv('GB2312', 'UTF-8', $a); } return $b; }
Recommandations associées :
Fonction sqlserver pour générer rapidement les premières lettres des caractères chinois (classique)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!