作者yuleen123 (.......................)
看板PHP
標題Re: [請益] 似乎是字串編碼問題
時間Mon Apr 6 18:24:56 2009
※ 引述《sarino (soap)》之銘言:
: <HTML>
: <HEAD>
: <META http-equiv="Content-Type" CONTENT="text/php; charset=Big5">
: </HEAD>
: <body>
: <?php
: $i=0;
: $arr=array();
: $arr='測試一';
: ?>
: <FORM ACTION="" METHOD=POST CLASS='Query' NAME="myForm">
: <TABLE border="1">
: <?php
: for($i=0;$i<78;$i++)
: {
: if($i%13==0)
: print"<TR>";
: print"<TD ALIGN=center><INPUT SIZE=1 MAXLENGTH=1 TYPE=TEXT
: value='".$arr[$i]."' </TD>";
上面這一行改成
value='".$arr[$i].( ord($arr[$i]) > 127 ? $arr[$i+1] : "" )."' </TD>";
: if($i%13==0)
: print"</TR>";
這裡加兩行
if( ord($arr[$i]) > 127 )
$i += 1;
: }
: ?>
: </TABLE>
: </FORM>
: </BODY>
: 上面PHP中 $arr內的字串如果是英文或數字 是可以正常呈現的
: 但是 中文則是亂碼 表格的編排也會出錯
: 我猜是編碼問題 可是我在header已經強制是BIG5碼了@@
: 請問各位 我的問題是出在哪裡
php 不像 asp 預設使用 unicode 來存字串
所以把字串放到 array 裡面是 一個 byte 一個 byte 來讀的
但是中文字有兩個 bytes, 就會遇到這個問題
解決的方法就是在輸出的時候要自行判斷是不是中文字
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.9.85
推 sarino :多謝 04/06 19:07
推 bobju :也可以把程式轉成utf8編碼,如此一來程式裏的字串也就 04/07 11:06
→ bobju :跟著是utf8編碼. 04/07 11:06