脚本宝典收集整理的这篇文章主要介绍了PHP utf8问题,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
除特殊挪威字符(æ,ø,å)外的所有字符都可以正常工作.
function isNorwegianChar($Char) { $aNorwegianChars = array('a','A','b','B','c','C','d','D','e','E','f','F','g','G','h','H','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x','X','y','Y','z','Z','æ','Æ','ø','Ø','å','Å','=','(',')',' ','-'); $iArrayLength = count($aNorwegianChars); for($iCount = 0; $iCount < $iArrayLength; $iCount++) { if($aNorwegianChars[$iCount] == $Char) { return true; } } return false; }
如果有人知道我能做什么,请告诉我.
更新:
需要这个的原因是我试图解析一个包含挪威语和中文单词的文本文件,比如字典.我想把这行分成字符串,一行包含挪威语,一行包含中文.稍后将将其插入数据库中.示例行:
impulsiv形冲动的
imøtegå动反对,反驳
imøtekomme动符合
alkoholmisbruk(er)名滥用酒精(名滥用酒精的人)
alkoholpåvirket形受酒精影响的
alkotest名呼吸性酒精测试
alkymi(st)名炼金术(名炼金术士)
all,alt,alle,形全部,所有
正如你所看到的那样,这些单词之间可能存在空格,所以我不能使用像爆炸这样简单的东西来分割中文和挪威语.我所做的是使用isNorwegianChar并遍历该行,直到找到不在数组中的char.
问题在于æ,ø和å不是作为挪威人回归的,它认为中文这个词已经开始了.
这是代码:
//OPEn file. $rFile = fopen("norsk-kinesisk.txt","r"); // Loop through the file. $Count = 0; while(!feof($rFile)) { if(40== $Count) { break; } $sLine = fgets($rFile); if(0 == $Count) { $sLine = mb_substr($sLine,3); } $iLineLength = strlen($sLine); $bChineseHasStarted = false; $sNorwegianWord = ''; $sChineseWord = ''; for($iCount2 = 0; $iCount2 < $iLineLength; $iCount2++) { $char = mb_substr($sLine,$iCount2,1); if(($bChineseHasStarted === false) && (false == isNorwegianChar($char))) { $bChineseHasStarted = true; } if(false === $bChineseHasStarted) { $sNorwegianWord .= $char; } else { $sChineseWord .= $char; } //echo $char; } $sNorwegianWord = trim($sNorwegianWord); $sChineseWord = trim($sChineseWord); $Count++; } fclose($rFile);
要解决此问题,您可以确保PHP脚本与您要比较的字符集具有相同的编码,或者您可以使用iconv或mbstring库转换为适当的字符集.
另外,如果您还没有阅读,请阅读:http://www.joelonsoftware.com/articles/Unicode.html
更新:您要考虑的另一点是确保您传入此功能的内容符合您的想法.如果您使用数组索引运算符一次循环一个字符串一个字符,它将无法工作,因为您的UTF-8字符串可能使用两个字节(两个数组索引位置)来存储一个字符. mbstring中有函数根据字符位置而不是字节位置从字符串中复制文本.
以上是脚本宝典为你收集整理的PHP utf8问题全部内容,希望文章能够帮你解决PHP utf8问题所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。