當前位置:首頁 » 文件管理 » php上傳中文亂碼

php上傳中文亂碼

發布時間: 2022-10-15 22:58:26

php上傳圖片名稱亂碼

中文文件名需要轉碼成gbk:

functionsaveFile($fileArr,$post_get){
$realFileName=$fileArr["name"];//上傳文件的文件名
$ext_file_name=strrchr($realFileName,'.')?strrchr($realFileName,'.'):"";//獲取擴展名
$type=$fileArr["type"];//上傳文件的類型
$size=$fileArr["size"];//上傳文件的大小
$tmp_name=$fileArr["tmp_name"];//上傳文件的臨時存放路徑

$web_root=$_SERVER['DOCUMENT_ROOT'];
//$guidFilePath=$web_root.stripslashes($post_get['tagPath']).'/'.creat_guid(0).$ext_file_name;
$FileUrl=stripslashes($post_get['tagPath']).'/'.$realFileName.$ext_file_name;
$FilePath=$web_root.$guidFileUrl;

$FilePathBK=iconv("utf-8","gbk",$dFilePath);
$md5=strtoupper(md5_file($tmp_name));
try{
if(move_uploaded_file($tmp_name,$FilePathBK)){
returnarray("success"=>true,'msg'=>"","realFileName"=>$realFileName,"guidFilePath"=>$guidFilePath,'md5'=>$md5,"fileSize"=>$size);
}else{
returnarray("success"=>true,'msg'=>$realFileName.'isnotavaliploadfile!',"realFileName"=>$realFileName,"guidFilePath"=>$guidFilePath,"fileSize"=>$size);
}
}catch(Exception$e){
returnarray("success"=>false,'msg'=>$e->getMessage(),"realFileName"=>$realFileName,"guidFilePath"=>$guidFilePath,"fileSize"=>$size);
}
}

⑵ php本地不亂碼 上傳伺服器亂碼

問題描述不清楚,亂碼可能是文檔編碼,可能是頁面顯示編碼,可能是瀏覽器查看編碼,也可能是數據傳到資料庫時,資料庫編碼不對,導致亂碼,你可以從這幾個方面修改。

⑶ 表單傳值中文亂碼 php

用action就可以了 。首先頁面程序編碼都要設置成一致。你在接受表單之前設置一下
request.setCharacterEncoding("UTF-8");或者GBK編碼, 然後在輸出一下,看看接受到的東西還是不是亂碼。

⑷ PHP中文亂碼怎麼解決

最好最快的解決辦法就是使頁面申明的編碼與資料庫內部編碼一致,如果頁面申請的編碼與資料庫內部的編碼不一致時,那就設定連接編碼。Mysql_query(「set
names
***」).
php文件本身的編碼與網頁的編碼應匹配,如果欲使用gb2312編碼,那麼php要輸出頭
代碼如下:
header(「Content-type:text/html;charset=gb2312」)
靜態頁面添加
代碼如下:
<meta
http-equiv=」Content-type」content=」text/html;
charset=gb2312」>,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。
如果欲使用uft-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軟體來保存。
我也是從這里得知:
http://www.chinahost.org/page-320-1-1.html?fa=ss_php

⑸ 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中中文亂碼問題方法

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


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


    b. 如果欲使用utf-8編碼,那麼php要輸出頭:header(「Content-Type: text/html; charset=utf-8"),靜態頁面添加<metahttp-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轉碼。

  3. 如果你的HTML文件文件出現了亂碼問題,那麼你可以在head標簽裡面加入UTF8編碼(國際化編碼):UTF-8是沒有國家的編碼,也就是獨立於任何一種語言,任何語言都可以使用的。

(6)php上傳中文亂碼擴展閱讀:

解決PHP 輸出簡單的中文 亂碼問題的其他方法:

在php的echo前面加入header("Content-Type:text/html;charset=gb2312")

把<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />中的UTF-8改成gb2312

⑺ 如何解決php中文參數傳遞亂碼情況

php用中文參數沒問題的 問題出在別處 比如顯示頁的編碼 如果你找不到問題所在 可以用 base64_encode($tag)處理一下$tag 接收的時候再用 base64_decode($tag)即可

⑻ php為何在網頁上中文顯示亂碼

1、這個是典型的編碼問題。
2、在php文件第一行代碼前加上header("Content-type:text/html;charset=utf-8「);這一句就可以正常顯示了。

⑼ PHP上傳出現亂碼 請問以下這段上傳代碼我上傳中文時會出現亂碼,請問怎麼修改啊

修改這一行代碼:

//移動文件
// $file_path = $save_path . $file_name;
$file_path = $save_path . microtime( TRUE ) . '.' . $file_ext;

原因:
windows和該代碼的文件名編碼不一致,windows是GB編碼,你的代碼是UTF編碼,所以直接用文件原始文件名會導致亂碼。
只要是文件上傳的地方統統要修改文件名,客戶端的文件名可以寫在資料庫裡面。

⑽ PHP上傳文件名亂碼,win環境。

if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name']))
改為
if(move_uploaded_file($pic['tmp_name'], iconv("UTF-8","GBK",$upload_dir.$pic['name'])))

熱點內容
華為電腦伺服器系統進不去提示 發布:2024-10-08 00:13:42 瀏覽:490
登錄密碼如何獲取 發布:2024-10-07 23:58:40 瀏覽:424
王者榮耀人機腳本 發布:2024-10-07 23:58:33 瀏覽:807
地標建築腳本 發布:2024-10-07 23:48:51 瀏覽:242
sqlorderby 發布:2024-10-07 23:42:13 瀏覽:958
qq秒源碼 發布:2024-10-07 23:41:37 瀏覽:471
51單片機編譯器 發布:2024-10-07 23:28:04 瀏覽:798
安卓手機陌陌封設備了怎麼搞 發布:2024-10-07 23:17:00 瀏覽:180
sql管理系統代碼 發布:2024-10-07 23:00:51 瀏覽:524
安卓什麼瀏覽器可以打開 發布:2024-10-07 23:00:51 瀏覽:121