php傳中文給Java_完美解決PHP中文亂碼(轉) - - JavaEye技術網站

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

一.首先是PHP網頁的編碼

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

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

b.如果欲使用utf-8編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=utf-8"),靜態頁面添加,所有文件的編碼格式為utf-8(Zend: File->Properties->Resource->Text file encoding:改成 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是保存在服務上文件的地址。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453562.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CharSequence類

CharSequence是char類型的一個可讀序列,它本身是一個接口,CharBuffer、String、StringBuffer、StringBuilder這個四個類實現了這個接口。此接口對于不同種類的char序列提供統一的只讀訪問以下是這個函數的API 它只定義了四個方法 /*** This interface re…

程序員考核的五大死因

程序員考核的五大死因(上) 程序員作為企業開發力量的最核心資產,無疑得到公司從上至下的一致關注。開發是個智力密集型產業,程序開發的特點是,付出相同時間的情況下,兩個開發者之間的產能會相差十幾甚至幾…

java編寫螺旋矩陣講解_Java如何實現螺旋矩陣 Java實現螺旋矩陣代碼實例

本篇文章小編給大家分享一下Java實現螺旋矩陣代碼實例,小編覺得挺不錯的,現在分享給大家供大家參考,有需要的小伙伴們可以來看看。給定一個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有…

Vue Axios的配置 (高仿餓了么)

export default {name: "app",components: {"v-header": header},data() {return {seller: {}};},created() {let _this this; // 讓this始終代表最初this指向的對象this.axios.get(../data.json).then(function(res) {_this.seller res.data.sellercons…

PagerAdapter學習

前言: ViewGroup可以實現很多功能,如簡單的頁面導航和頁面滑動等等。谷歌公司為我們提供ViewGroup的API。谷歌公司推薦我們把ViewGroup和Fragment一起使,如果一起使用的話,應該使用FragmentPagerAdapter和FragmentStatePagerAdapter來進行適配處理&#…

arXiv網站

arXiv 原先是由物理學家保羅金斯巴格在1991年建立的網站, 我們會將預稿上傳到arvix作為預收錄,因此這就是個可以證明論文原創性(上傳時間戳)的文檔收錄網站。轉載于:https://www.cnblogs.com/AntonioSu/p/8387324.html

加薪——愛你在心口難開

加薪——愛你在心口難開(1) (原文刊登于《程序員》雜志07年第4期) 剛過了春節的4月份,空氣中到處透著躁動的味道,“求職”、“招聘”不斷刺激著程序員們的耳鼓,其實大多數跳槽者如果能靜下心來審視自己一下&#xf…

java線程interrupt用法_Java線程中interrupt那點事 | 學步園

1.先看一下例子程序:import java.io.IOException;import java.net.ServerSocket;import javax.rmi.CORBA.Tie;/**author: ZhengHaibo*web: http://blog.csdn.net/nuptboyzhb*mail: zhb931706659126.com*2014-3-16 Nanjing,njupt,China*/public class TestThread {/*…

Kotlin Native新增Objective-C互操作能力以及對WebAssembly的支持

根據JetBrains技術主管Nikolay Igotti的介紹,Kotlin/Native 0.4已經可用于為iOS和macOS開發原生應用。此外該版本還為WebAssembly平臺提供了實驗性支持。 \\Kotlin/Native對iOS/macOS開發的支持,關鍵在于實現了與Objective-C的互操作性。JetBrains目前已…

TranslateAnimation動畫

眾所周知,TranslateAnimation是android中重要的一個動畫函數,很多時候我們都需要使用它來實現更好的UI效果,今天就簡單研究下這個TranslateAnimation。TranslateAnimation這個位移動畫主要有三個構造函數,對應著三種不同的參數形式…

maven項目使用jacoco插件檢測代碼覆蓋率詳細配置

使用maven構建項目&#xff08;java項目或者web項目都可以&#xff09; jacoco插件的配置參考官方網址&#xff1a;http://www.eclemma.org/jacoco/trunk/doc/maven.html &#xff08;1&#xff09;配置jacoco的依賴jar包 <dependency><groupId>org.jacoco</gro…

JAVA如何取得空list成員類型_String 類型的List作為一個成員變量保存,保存成功后取對象時報空指針...

異常&#xff1a;Caused by: java.lang.NullPointerException at org.litepal.crud.DataHandler.setToModelByReflection(DataHandler.java:1341) at org.litepal.crud.DataHandler.setGenericValueToModel(DataHandler.java:787) at org.litepal.crud.DataHandler.query(DataH…

C語言:幾種字符輸入函數的區別

幾種字符輸入函數的區別&#xff1a; 1、getche()函數:用于從鍵盤讀入一個字符并顯示&#xff0c;然后直接執行下一條語 句。2、getch()函數:用于從鍵盤中讀入一個字符&#xff0c;但不顯示在屏幕上&#xff0c;然后執行下一條語句。3、getchar()函數&#xff1a;用于從鍵盤讀…

VCG Mesh剛性旋轉(變換矩陣)

文章目錄 一、簡介二、實現代碼三、實現效果參考資料一、簡介 旋轉矩陣如果從線性空間的角度來看,它類似于一個投影過程。假設坐標 P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1)

薪水增長多少,新機會才值得考慮?

薪水增長多少,新機會才值得考慮? 陰歷年馬上就要來到&#xff0c;豬年正在向我們招手。相信有些朋友年后考慮新的要作機會&#xff0c;年終獎和第13個薪水已到手&#xff0c;是考慮一下離開這個讓自己不“爽”公司的時候了&#xff0c;哈哈&#xff01; 但是&#xff0c;薪水…

ScaleAnimation動畫

ScaleAnimation動畫是用來進行縮放的動畫&#xff0c;我在使用時剛開始有些不解的問題后來經過學習&#xff0c;有了一個更深的了解。先來看看源碼&#xff0c;其實ScaleAnimation有四個構造函數&#xff0c;這里我只列出了其中的一個&#xff0c;因為另外的三個其實都只是這個…

Swift快速入門(一)第一個Swift程序

1. 本系列說明 本系列只是一個Swift快速入門的教程&#xff0c;并沒有詳盡的介紹Swift&#xff0c;Swift也并不是一個簡單的編程語言&#xff0c;所以要想詳盡的系統的學習Swift&#xff0c;本系列并不適合你&#xff0c;此系列只是讓開發者可以快速的用Swift來進行開發。另外學…

java 判斷數字變化增減_java String 強化操作 判斷數字 字符串轉阿拉伯數字,相似度等等...

importjava.io.BufferedReader;importjava.io.StringReader;importjava.util.ArrayList;importjava.util.List;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***author*/public classStrings {/*** 全角轉半角**paramsbc 全角字符*returnString*/public stat…

[CareerCup] 4.7 Lowest Common Ancestor of a Binary Search Tree 二叉樹的最小共同父節點

4.7 Design an algorithm and write code to find the first common ancestor of two nodes in a binary tree. Avoid storing additional nodes in a data structure. NOTE: This is not necessarily a binary search tree. LeetCode上的原題&#xff0c;請參見我之前的博客Lo…

讓獵頭雨天送傘--大話獵頭

讓獵頭雨天送傘--大話獵頭(1) Arthur畢業之后&#xff0c;在一同家公司的研發部工作了7年&#xff0c;從初級開發工程師一直做到項目經理&#xff0c;過手十幾個大項目&#xff0c;現在帶領8人的研發團隊。獵頭最近頻頻與他溝通&#xff0c;希望他考慮幾個外企研發主管的機會…