1. 程式人生 > >PHP寫入資料庫中文亂碼問題

PHP寫入資料庫中文亂碼問題

宣告:本篇文章來自http://www.jb51.net/article/30123.htm

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_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" content="text/html; charset=gb2312" /> 

相關推薦

PHP寫入資料庫中文亂碼問題

宣告:本篇文章來自http://www.jb51.net/article/30123.htm PHP頁面轉UTF-8編碼問題  1.在程式碼開始出加入一行:  header("Content-Type: text/html;charset=utf-8"); 2

php使用substr中文亂碼問題

php配置 字節 查看數據庫 根據 javase 推薦 substr() pla format 周天的時候對網站 https://www.javasec.cn 進行bug修復和功能更新,其中遇到一個比較有意思的小問題: 問題: 網站的置頂推薦中,有文本略縮。但是無論怎

使用jdbc連線資料庫中文亂碼問題

     今天在學習jdbc時做了一個專案,專案主要實現的功能是通過jdbc連線資料庫,進行新增和查詢圖書館書籍。過程中遇到了新增中文到資料庫的亂碼問題,跟大家分享一下解決方案: 一.新增的時候是否有報錯(沒有的話直接繞道到二)     如果

mysql是我們專案中非常常用的資料型資料庫。但是因為我們需要在資料庫儲存中文字元,所以經常遇到資料庫亂碼情況。下面就來介紹一下如何徹底解決資料庫中文亂碼情況。

mysql是我們專案中非常常用的資料型資料庫。但是因為我們需要在資料庫儲存中文字元,所以經常遇到資料庫亂碼情況。下面就來介紹一下如何徹底解決資料庫中文亂碼情況。 1、中文亂碼 1.1、中文亂碼 create table user(name varchar(11)); # 建立user表

Navicat修改mysql資料庫中文亂碼問題

步驟1:開啟navict,連線你的mysql資料庫 第二步:新建資料庫。選擇連線,右鍵選擇新建資料庫 選擇:utf8 -- UTF-8 Unicode 再選擇:utf8_general_ci 第3步:新建表,每個欄位同樣選擇utf-

解決windows下mysql資料庫中文亂碼的問題

今天下午,在Qt中往mysql資料庫中插入資料時,中文顯示亂碼,如下圖所示: 開始以為是資料庫字元編碼的問題,[1]開始使用set character_set_database=utf8 在命令列上修改字元編碼, 但是重啟mysql之後,字元編碼並沒有修改成功。 [2]於是找到My

php如何解決中文亂碼問題?

我們將亂碼情況分為以下幾種,有需要的可以對照下面的幾種情況有針對性的解決亂碼問題 第一種:解決HTML中中文亂碼問題方法 如果你的HTML檔案檔案出現了亂碼問題,那麼你可以在head標籤裡面加入UTF8編碼(國際化編碼):UTF-8是沒有國家的編碼,也就是獨立於

Oracle資料庫中文亂碼問題

中文亂碼問題解決 檢視伺服器端編碼 select userenv('language') from dual; 我實際查到的結果為: AMERICAN_AMERICA.ZHS16GB 執行語句 select * from V$NLS_PARAMETE

PHP--ajax請求中文亂碼之json_encode中文亂碼

今天在呼叫一個介面時,發現我傳遞給後臺的資料中的中文莫名其妙的亂碼了。。。一開始想著是不是我前臺的呼叫方法不對,導致中文在傳遞的過程中出現了亂碼。但是我發現介面中另一個欄位使用中文就沒有問題,無奈之下,本人只能開啟phpstorm來看看後臺的介面是什麼情況,結果發現傳遞給後臺的資

SpringBoot MySql資料庫中文亂碼問題排查實紀

引言: 最近用StringBoot開發了一個簡單的小程式伺服器,發現通過post請求插入的中文欄位在資料庫中是顯示“???”的形式,本來不以為意,以為是顯示的問題,誰知通過get請求獲取資料的時候返回的也是“???”,這下就開始慌了,於是開始了問題的排查。以下為排查的過程。 首先

centos中mysql資料庫中文亂碼的解決方法

預設my.cnf配置檔案中在/etc/mycnf,開啟之後在裡面加入以下命令即可: [client] default-character-set=utf8 [mysqld] character-set-server=utf8 collation-server=u

對於mysql資料庫中文亂碼問題的解決(在所有的編碼都是utf-8的情況下中文亂碼

在寫jdbc連結mysqll資料庫時,向其中插入中文資料出現亂碼。查看了所有的配置,都是utf-8編碼,my.ini配置檔案也修改好了,還出現這樣的亂碼,實屬不應該。 在各種部落格論壇查詢,都是修改資料庫的編碼的套路,其中也不乏有在連線資料庫的連結url中加編碼的,比如:“jdbc:mysql:

eclipse寫入mysql中文亂碼

1、response.setContentType("text/html;charset=UTF-8");   request.setCharacterEncoding("UTF-8"); 2、byte a[]  = Dept.getBytes("ISO-8859-1");

mysql資料庫中文亂碼的問題

在idea上面新建了一個web登入專案,瀏覽器提交表單,username“李華”存入資料庫是亂碼,只好一步步解決 1.在idea中輸出請求引數username就是亂碼,也就是“form表單提交中文的亂碼問題” 解決方法:在idea中設定request編碼格式和客戶端網頁一致(以UTF-8為例

Java web後臺插入資料庫中文亂碼問題解決

前言:專案想要避免亂碼情況的出現,要保持伺服器、資料庫、專案、以及前端編碼一致。 一、專案以及前端編碼,設定。myeclipse--->右鍵專案--->Properties--->Resource--->Text file encoding-----

php echo 輸出中文亂碼

在php檔案中,大家可能經常這樣用echo "<script charset='utf-8' type='text/javascript'>alert('請輸入正確的手機號碼');window.location.href='/index';</script

mysql 存入資料庫 中文亂碼

1、要保證資料庫、表、欄位都是utf-8的資料型別。排序一直即可。 資料庫的在資料庫屬性裡面改: 表的在設計表裡面改: 欄位的也是在設計表裡面改:  常用命令: -- 檢查字符集型別show variables like 'character_set_%';-- 設定字符集型別SET

FileWriter 寫入檔案中文亂碼

File file1 = new File("C:\\1.xml"); FileWriter fw = new FileWriter(file1); fw.write("要輸入的xml字串"); fw.flush(); fw.close();

資料庫中文亂碼解決方案總結,tomcat+mysql+hibernate

我的開發環境是eclipse+tomcat+mysql+hibernate,資料落地時發現中文都成了?,網上一搜,原因有很多,這邊總結下,大家碰到可以按著一一排查: 一般編碼都會常用UTF-8編碼 1. 資料庫編碼 檢視mysql資料的的編碼,確實是utf-8 如

eclipse匯入外部專案後中文顯示亂碼問題解決,SQLyog與MySql資料庫中文亂碼問題,其他亂碼問題

要解決中文亂碼問題,就是要保持不同的位置的編碼方式一致,目前我們通常使用UTF-8編碼,將不同的位置改為相同的編碼即可。 首先是在eclipse工作環境中,對不同的編碼進行更改: 右擊專案名稱,選擇properties,將其中涉及編碼的地方都改為UTF-8即可。