本文目錄一覽:
php 中文轉拼音首字母問題
原始代碼有些問題,我做了些更改,原地址github 的 chenall/chenall/blob/master/php/tools/ZH-cn_TO_pinyin.php
?php
/*
中文漢字轉拼音首字母的PHP簡易實現方法.
要求: 只能是GB2312碼錶裡面中文字元
轉換得到字元串對應的拼音首字母大寫.
用法:
echo zh2py::conv(‘Chinese 中華人民共和國’);//Chinese ZHRMGHG
或
$py = new zh2py;
echo $py-conv(‘Chinese 中華人民共和國’);//Chinese ZHRMGHG
*/
class zh2py
{
//根據漢字區位表
//我們可以看到從16-55區之間是按拼音字母排序的,所以我們只需要判斷某個漢字的區位碼就可以得知它的拼音首字母.
//區位表第一部份,按拼音字母排序的.
//16區-55區
/*
‘A’=0xB0A1, ‘B’=0xB0C5, ‘C’=0xB2C1, ‘D’=0xB4EE, ‘E’=0xB6EA, ‘F’=0xB7A2, ‘G’=0xB8C1,’H’=0xB9FE,
‘J’=0xBBF7, ‘K’=0xBFA6, ‘L’=0xC0AC, ‘M’=0xC2E8, ‘N’=0xC4C3, ‘O’=0xC5B6, ‘P’=0xC5BE,’Q’=0xC6DA,
‘R’=0xC8BB, ‘S’=0xC8F6, ‘T’=0xCBFA, ‘W’=0xCDDA, ‘X’=0xCEF4, ‘Y’=0xD1B9, ‘Z’=0xD4D1
*/
private static $FirstTable = array(
0xB0C5, 0xB2C1, 0xB4EE, 0xB6EA, 0xB7A2, 0xB8C1, 0xB9FE, 0xBBF7, 0xBFA6, 0xC0AC, 0xC2E8,
0xC4C3, 0xC5B6, 0xC5BE, 0xC6DA, 0xC8BB, 0xC8F6, 0xCBFA, 0xCDDA, 0xCEF4, 0xD1B9, 0xD4D1,0xD7FA
);
private static $FirstLetter = “ABCDEFGHJKLMNOPQRSTWXYZ”;
//區位表第二部份,不規則的,下面的字母是每個區裡面對應字的拼音首字母.從網上查詢整理出來的,可能會有部份錯誤.
//56區-87區
private static $SecondTable = array(
“CJWGNSPGCGNEGYPBTYYZDXYKYGTZJNMJQMBSGZSCYJSYYFPGKBZGYDYWJKGKLJSWKPJQHYJWRDZLSYMRYPYWWCCKZNKYYG”,
“TTNGJEYKKZYTCJNMCYLQLYPYSFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCKBPHFFSSTYBGMXLPBYLLBHLX”,
“SMZMYJHSOJNGHDZQYKLGJHSGQZHXQGKXZZWYSCSCJXYEYXADZPMDSSMZJZQJYZCJJFWQJBDZBXGZNZCPWHWXHQKMWFBPBY”,
“DTJZZKXHYLYGXFPTYJYYZPSZLFCHMQSHGMXXSXJYQDCSBBQBEFSJYHWWGZKPYLQBGLDLCDTNMAYDDKSSNGYCSGXLYZAYPN”,
“PTSDKDYLHGYMYLCXPYCJNDQJWXQXFYYFJLEJPZRXCCQWQQSBZKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMQJCJLY”,
“QGJMSHZKBSWYEMYLTXFSYDXWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCL”,
“QKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNMGYKLDYXZPYLGGSMTCFBAJJZYLJTYANJGBJPLQGSZYQYAXBKYSECJSZNSLYZH”,
“ZXLZCGHPXZHZNYTDSBCJKDLZAYFFYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCS”,
“YDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGAGHDAASHTCPLCPQYBSZMPJLPCJOQLCDHJJYSPRCHNWJNLHLYYQYYWZPTCZG”,
“WWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYDCFCXYHLXCHYZJQSQQAGMNYXPFRKSSBJLYXY”,
“SYGLNSCMHCWWMNZJJLXXHCHSYZSTTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLYXDCCWZOCWKCCSBNHCPDYZNFCYYTYCKX”,
“KYBSQKKYTQQXFCMCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQKZPQSQSCFYMMDMGBWHWLGSLLYSDLMLXPTHMJ”,
“HWLJZYHZJXKTXJLHXRSWLWZJCBXMHZQXSDZPSGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCL”,
“SLDCLRPBHZHXYYFHBMGDMYCNQQWLQHJJCYWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSLJHTZKZJECXJCJNMFBYCSFYWYB”,
“JZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNTXHPLQKZCZWALSBCZJXSYZGWK”,
“YPSGXFZFCDKHJGXTLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWFMJKLDDPMJEGXYHYLXHLQYQHKYCW”,
“CJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLTCKLYRZZGQTTJHHHJLJAXFGFJZSLCFDQZ”,
“LCLGJDJZSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNW”,
“CZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJTFCJXDYGJQJJPMGWGJJJPKQSB”,
“GBMMCJSSCLPQPDXCDYYKYPCJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJYFYZDJCNMWESCYGLBTZZGMSS”,
“LLYXYSXXBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMCYHYWDBXBTLMSYYYFSXJCBDXXLHJHFSSXZQHFZMZCZTQCXZXRTT”,
“DJHNRYZQQMTQDMMGNYDXMJGDXCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMKDMDSYYSZCMLJDSYN”,
“SPRSKMKMPCKLGTBQTFZSWTFGGLYPLLJZHGJJGYPZLTCSMCNBTJBQFKDHBYZGKPBBYMTDSSXTBNPDKLEYCJNYCDYKZTDHQH”,
“SYZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDXJPLDLPCQDHZYCBZSCZBZMSLJFLKR”,
“ZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLGNDJLSLYGKDZPZXJYYZLWCXSZFGWYYDLYHCLJS”,
“CMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJYYCNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPYXJCJLZCSHLTOLJNMDDDLNGKATHQH”,
“JHYKHEZNMSHRPHQQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMM”,
“MYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYJDJJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDG”,
“DZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYG”,
“CTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZ”,
“GSZZQLYLWTJPFSYASMCJBTZYYCWMYTZSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQFHBS”,
“AQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ”,
);
public static function utf8_to_gbk($string)//編碼轉換,必須轉換成GB2312字元,這裡只是簡單的判斷並不是很準確,可以自己寫一個.
{
if (mb_check_encoding($string,’gb2312′))
return $string;
if (function_exists(‘iconv’))
return iconv(“utf-8″,”gb2312//IGNORE”,$string);
return mb_convert_encoding($string,’gb2312′,’utf-8′);
}
public static function conv($str)
{
$str = self::utf8_to_gbk($str);
$len = strlen($str);
$newStr = ”;
for($i=0; $i$len ; ++$i)
{
$H = ord($str[$i]);
$L = ord($str[$i+1]);
//字符集非法
if ($H 0xB0 || $L 0xA1 || $H 0xF7 || $L == 0xFF)
{
$newStr .= $str[$i];
continue;
}
if ($H 0xD8)//($H = 0xB0 $H =0xD7)//查詢文字在一級漢字區(16-55)
{
$W = ($H 8) | $L;
foreach(self::$FirstTable as $key=$value)
{
if ($W $value)
{
$newStr .= self::$FirstLetter[$key];
break;
}
}
}
else// if (H = 0xD8 H = 0xF7)//查詢中文在二級漢字區(56-87)
$newStr .=self::$SecondTable[$H – 0xD8][$L-0xA1];
++$i;
}
return $newStr;
}
}
echo zh2py::conv(‘妃’);//F
php 將中文轉換為GBK編碼
1、運行控制台,程序-運行,輸入CMD,點擊確定進入DOS操作系統 快捷鍵windows鍵+R鍵。
2、編寫需要運行的java代碼。
3、切換運行目錄到您存放java代碼的目錄!使用命令 cd 切換。
4、解決錯誤提示:編碼 GBK 的不可映射字元,使用命令:javac -encoding utf-8 helloword.java,編譯成功。
5、成功編譯後,在tmp目錄下能看到helloword.java文件編譯後的.class位元組碼文件。使用命令【 java helloword 】,運行java程序。
php怎樣把utf8轉換為gbk
?php@header(“Content-type:text/html;charset=UTF-8”);echo $str= ‘你好,這裡是賣咖啡!’;echo ‘br /’;echo iconv(“UTF-8″,”gbk//TRANSLIT”,$str);; //將字元串的編碼從UTF-8轉到GB2312
echo ‘br /’;echo iconv_substr($str, 1, 1, ‘UTF-8’); //按字元個數截取而非位元組print_r(iconv_get_encoding()); //得到當前頁面編碼信息echo iconv_strlen($str, ‘UTF-8’); //得到設定編碼的字元串長度?
gbk轉換為utf8的方法:
?php
@header(“Content-type:text/html;charset=GB2312”);echo $str= ‘你好,這裡是賣咖啡!’;echo ‘br /’;echo iconv(‘GB2312’, ‘UTF-8’, $str); //將字元串的編碼從GB2312轉到UTF-8echo ‘br /’;echo iconv_substr($str, 1, 1, ‘GB2312’); //按字元個數截取而非位元組print_r(iconv_get_encoding()); //得到當前頁面編碼信息echo iconv_strlen($str, ‘GB2312’); //得到設定編碼的字元串長度?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192781.html