導航:首頁 > 編程語言 > iconvphpansi

iconvphpansi

發布時間:2022-06-17 14:37:27

php程序usc2編碼如何轉換成ansi簡體中文編碼

給個轉碼的方法給你吧! 你可以自己修改$outEncoding的參數,下面的方法默認是轉換為gb2312的字元集了,你調用方法就可以將你的字元串轉換字元

//中文字元編碼轉換
public function safeEncoding($string,$outEncoding ='GB2312')
{
$encoding = "UTF-8";
for($i=0;$i<strlen($string);$i++)
{
if(ord($string{$i})<128)
continue;

if((ord($string{$i})&224)==224)
{
//第一個位元組判斷通過
$char = $string{++$i};
if((ord($char)&128)==128)
{
//第二個位元組判斷通過
$char = $string{++$i};
if((ord($char)&128)==128)
{
$encoding = "UTF-8";
break;
}
}
}

if((ord($string{$i})&192)==192)
{
//第一個位元組判斷通過
$char = $string{++$i};
if((ord($char)&128)==128)
{
// 第二個位元組判斷通過
$encoding = "GB2312";
break;
}
}
}

if(strtoupper($encoding) == strtoupper($outEncoding))
return $string;
else
return iconv($encoding,$outEncoding,$string);
}

Ⅱ php進行iconv編碼轉換時,未知字元導致轉換後數據丟失

iconv,轉碼時使用//INGORE忽略錯誤,不能轉換的字會被忽略掉。

Ⅲ php 添加語句資料庫出現亂碼

連接完資料庫要mysql_query('SET
NAMES
GBK');
該PHP文件保存類型要為ANSI
資料庫的連接形式什麼的也要是gbk的
最後實在不行你就把插入到資料庫中的數據執行一下轉碼iconv(「UTF-8″,」GBK」,$data);
再不行
哥也無語了

Ⅳ php亂碼怎麼辦

PHP中文亂碼一般是字元集問題,編碼主要有下面幾個問題。

一.首先是PHP網頁的編碼

1.php文件本身的編碼與網頁的編碼應匹配

a.如果欲使用gb2312編碼,那麼php要輸出頭:header(「Content-Type: text/html; charset=gb2312"),靜態頁面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。

b.如果欲使用utf-8編碼,那麼php要輸出頭:header(「Content-Type: text/html; charset=utf-8"),靜態頁面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的編碼格式為utf-8。保存為utf-8可能會有點麻煩,一般utf-8文件開頭會有BOM,如果使用session就會出問題,可用editplus來保存,在editplus中,工具->參數選擇->文件->UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。

2.php本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼。

二.PHP與Mysql的數據交互

PHP與資料庫的編碼應一致

1.修改mysql配置文件my.ini或my.cnf,mysql最好用utf8編碼

[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-storage-engine=MyISAM
在[mysqld]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'

2.在需要做資料庫操作的php程序前加mysql_query("set names '編碼'");,編碼和php編碼一致,如果php編碼是gb2312那mysql編碼就是gb2312,如果是utf-8那mysql編碼就是utf8,這樣插入或檢索數據時就不會出現亂碼了

三.PHP與操作系統相關

Windows和Linux的編碼是不一樣的,在Windows環境下,調用PHP的函數時參數如果是utf-8編碼會出現錯誤,比如move_uploaded_file()、filesize()、readfile()等,這些函數在處理上傳、下載時經常會用到,調用時可能會出現下面的錯誤:

Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...

Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...

Warning: filesize() [function.filesize]: stat failed for ... in ...

Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..

在Linux環境下用gb2312編碼雖然不會出現這些錯誤,但保存後的文件名出現亂碼導致無法讀取文件,這時可先將參數轉換成操作系統識別的編碼,編碼轉換可用mb_convert_encoding(字元串,新編碼,原編碼)或iconv(原編碼,新編碼,字元串),這樣處理後保存的文件名就不會出現亂碼,也可以正常讀取文件,實現中文名稱文件的上傳、下載。

其實還有更好的解決方法,徹底與系統脫離,也就不用考慮系統是何編碼。可以生成一個只有字母和數字的序列作為文件名,而將原來帶有中文的名字保存在資料庫中,這樣調用move_uploaded_file()就不會出現問題,下載的時候只需將文件名改為原來帶有中文的名字。實現下載的代碼如下

header("Pragma: public");

header("Expires: 0");

header("Cache-Component: must-revalidate, post-check=0, pre-check=0");

header("Content-type: $file_type");

header("Content-Length: $file_size");

header("Content-Disposition: attachment; filename=\"$file_name\"");

header("Content-Transfer-Encoding: binary");

readfile($file_path);

$file_type是文件的類型,$file_name是原來的名字,$file_path是保存在服務上文件的地址。

Ⅳ php中文亂碼問題

把你的PHP文件保存utf8格式,常用的方法,記事本打開=>另存為=>編碼選擇utf8=>覆蓋原文件

Ⅵ PHP中怎麼將UTF-8字元串轉化為ANSI編碼

使用notepad++編輯器,打開php文件,然後在菜單欄上面選擇:格式,選擇以ansi編碼,即可。

Ⅶ PHP的字元轉成ANSI編碼。。。求助。。。

用notepad++吧
選擇「格式」->"專為ANSI編碼"
ok

Ⅷ PHP無法讀取顯示TXT中的某些漢字,並且編碼轉換的過程中會丟失一部分數據

iconv是很容易出錯的,$str=iconv("gb2312","utf-8",$str);
最好是改成
$str=iconv("gb2312","utf-8//IGNORE",$str);
這個可以減少轉換編碼帶來的錯誤。

Ⅸ 如何用php創建ANSI型文本文件

PHP創建的文件都是ANSI的,例如:
<?php
file_put_contents('abc.txt','abc');
?>
這個程序運行會生成一個ANSI文件名字叫做abc.txt,內容就是abc三個字母。

補充:
如果你的PHP文件是UTF-8的,如果要轉換為ANSI(GBK)個數輸出到文件,那麼可以這樣:
file_put_contents('abc.txt',iconv('UTF-8','GBK','中文漢字'));

Ⅹ php+mysql 編程中 ansi編碼 utf-8編碼有區別嗎,會產生影響求指教

PHP頁面轉UTF-8編碼問題
1.在代碼開始出加入一行:

復制代碼代碼如下:

header("Content-Type: text/html;charset=utf-8");

2.PHP文件編碼問題
點擊編輯器的菜單:「文件」->「另存為」,可以看到當前文件的編碼,確保文件編碼為:UTF-8,
如果是ANSI,需要將編碼改成:UTF-8。
3.PHP文件頭BOM問題:
PHP文件一定不可以有BOM標簽
否則,會出現session不能使用的情況,並有類似的提示:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
這是因為,在執行session_start() 的時候,整個頁面不能有輸出,但是當由於前PHP頁面存在BOM標簽,
PHP把這個BOM標簽當成是輸出了,所以就出錯了!
所以PHP頁面一定要刪除BOM標簽
刪除這個BOM標簽的方法:
1.可以用Dreamweaver打開文件,並重新保存,即可以去除BOM標簽!
2.可以用EditPlus打開文件,並在菜單「首選項」->「文件」->"UTF-8標識",設置為:「總是刪除簽名」,
然後保存文件,即可以去除BOM標簽!
4.PHP以附件形式保存文件的時候,UTF-8編碼問題:
PHP以附件形式保存文件,文件名必須是GB2312編碼,
否則,如果文件名中有中文的話,將是顯示亂碼:
如果你的PHP本身是UTF-8編碼格式的文件,
需要將文件名變數由UTF-8轉成GB2312:
iconv("UTF-8", "GB2312", "$filename");
利用程序來實例字元截取方法

復制代碼代碼如下:

function utf8_substr($str,$len)
{
for($i=0;$i<$len;$i++)
{
$temp_str=substr($str,0,1);
if(ord($temp_str) > 127){
$i++;
if($i<$len){
$new_str[]=substr($str,0,3);
$str=substr($str,3);
}
}else {
$new_str[]=substr($str,0,1);
$str=substr($str,1);
}
}
return join($new_str);
}

MYSQL資料庫使用UTF-8編碼的問題

1.用phpmyadmin創建資料庫和數據表
創建資料庫的時候,請將「整理」設置為:「utf8_general_ci」
或執行語句:

復制代碼代碼如下:

CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

創建數據表的時候:如果是該欄位是存放中文的話,則需要將「整理」設置為:「utf8_general_ci」,
如果該欄位是存放英文或數字的話,默認就可以了。
相應的SQL語句,例如:

復制代碼代碼如下:

CREATE TABLE `test` (
`id` INT NOT NULL ,
`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

2.用PHP讀寫資料庫
在連接資料庫之後:

復制代碼代碼如下:

$connection = mysql_connect($host_name, $host_user, $host_pass);

加入兩行:

復制代碼代碼如下:

mysql_query("set character set 'utf8'");//讀庫
mysql_query("set names 'utf8'");//寫庫

就可以正常的讀寫MYSQL資料庫了。

用的appserv-win32-2.5.10做的環境,裝這個包的時候用默認的utf8編碼。
在寫資料庫連接文件時,寫成:

復制代碼代碼如下:

$conn = mysql_connect("$host","$user","$password");
mysql_query("SET NAMES 'UTF8'");
mysql_select_db("$database",$conn);

然後在做頁面時,注意這句:

復制代碼代碼如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

這樣不管輸入資料庫的中文,還是頁面顯示,就都正常了。
在DW CS4版里,默認生成的也是utf8頁面。
同樣的,如果一開始寫資料庫連接文件時寫成:

復制代碼代碼如下:

mysql_query("SET NAMES 'GBK'");

那頁面也要相應變成:

復制代碼代碼如下:

<meta http-equiv="Content-Type" co

閱讀全文

與iconvphpansi相關的資料

熱點內容
新鄉市區疫情怎麼查詢app 瀏覽:158
我的世界伺服器怎麼弄圖 瀏覽:999
vc6的編譯框 瀏覽:198
程序員寫照 瀏覽:539
怎麼退出github伺服器版本 瀏覽:797
雲伺服器sip 瀏覽:910
對稱平衡型壓縮機 瀏覽:953
rust連接什麼伺服器 瀏覽:382
php刪除數組的空元素 瀏覽:74
有什麼古今翻譯的app 瀏覽:54
華為平板里的app熱門推薦怎麼關閉 瀏覽:731
kindle可以看pdf嗎 瀏覽:620
小米文件夾變小 瀏覽:324
為什麼安卓系統不設計橫屏 瀏覽:686
myeclipse編譯文件 瀏覽:586
水果解壓視頻教程 瀏覽:207
單片機控制的大一點的車 瀏覽:640
程序員中的榮譽 瀏覽:272
java的封裝性 瀏覽:387
命令提示符垃圾清理 瀏覽:806