作者 主題: 無法正常顯示PHP utf8 中文網頁  (閱讀 15167 次)

0 會員 與 1 訪客 正在閱讀本文。

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
無法正常顯示PHP utf8 中文網頁
« 於: 2009-06-28 12:30 »
在input.php網頁上輸入中文字(在phpMyAdmin裡中文字亦是空白),
output.php網頁中文無法顯示正常!
轉輸入英文便顯示正常,已在phpMyAdmin裡將 MySQL 文字編碼: UTF-8 Unicode (utf8) ,
MySQL 連線校對: UTF-8 Unicode (utf8) ,一齊設定都用utf-8(試過轉用Big5,另將input.php&output.php encoding轉用big便顯示正常,但本人要轉入

簡體字)
使用Hosting公司係用 :
伺服器版本: 5.0.81-community
phpMyAdmin - 2.11.9.5
MySQL 客戶端版本: 4.1.22

xxxConn.php
<?php
.
.
$xxxConn = mysql_pconnect($hostname_xxxConn, $username_xxxConn, $password_xxxConn) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query("SET NAMES 'utf8'");      //已加入使用utf8
?>

input.php
<?php require_once('../../../Connections/xxxConn.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO main (type, t_e, c_t) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['type'], "text"),
                       GetSQLValueString($_POST['t_e'], "text"),
                       GetSQLValueString($_POST['c_t'], "text"));
  mysql_select_db($database_s2nConn, $s2nConn);
  $Result1 = mysql_query($insertSQL, $s2nConn) or die(mysql_error());
  $insertGoTo = "output.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}
?>
.
.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
.
</html>

output.php
<?php require_once('../../../Connections/xxxConn.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
$maxRows_xxxRS = 20;
$pageNum_xxxRS = 0;
if (isset($_GET['pageNum_xxxRS'])) {
  $pageNum_s2nRS = $_GET['pageNum_xxxRS'];
}
$startRow_xxxRS = $pageNum_xxxRS * $maxRows_xxxRS;
mysql_select_db($database_xxxConn, $xxxConn);
$query_xxxRS = "SELECT * FROM main ORDER BY p_d DESC";
$query_limit_xxxRS = sprintf("%s LIMIT %d, %d", $query_xxxRS, $startRow_xxxRS, $maxRows_xxxRS);
$xxxRS = mysql_query($query_limit_xxxRS, $xxxConn) or die(mysql_error());
$row_xxxRS = mysql_fetch_assoc($xxxRS);
if (isset($_GET['totalRows_xxxRS'])) {
  $totalRows_xxxRS = $_GET['totalRows_xxxRS'];
} else {
  $all_xxxRS = mysql_query($query_xxxRS);
  $totalRows_xxxRS = mysql_num_rows($all_xxxRS);
}
$totalPages_xxxRS = ceil($totalRows_xxxRS/$maxRows_xxxRS)-1;
?>
.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
.
.
</html>
<?php
mysql_free_result($xxxRS);
?>
Thx!!(因字數限制,有些地方需要簡略)

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #1 於: 2009-06-28 18:18 »
就算在input.php加入以下指令,問題仍然存在...


用big5,中文出現亂碼,英文及數字正常顯示(包括在phpMyAdmin看)
mysql_query('SET NAMES big5');
mysql_query('SET CHARACTER_SET_CLIENT=big5');
mysql_query('SET CHARACTER_SET_RESULTS=big5');


用utf8/utf-8,中文出現空白,英文及數字正常顯示(包括在phpMyAdmin看)
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET_CLIENT=utf8');
mysql_query('SET CHARACTER_SET_RESULTS=utf8');

or

mysql_query('SET NAMES utf-8');
mysql_query('SET CHARACTER_SET_CLIENT=utf-8');
mysql_query('SET CHARACTER_SET_RESULTS=utf-8');



Thanks!

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #2 於: 2009-06-28 19:40 »
check 過, 所有都是utf8 setting
(逐個table,遂個field,文字編碼,校對一齊都是utf8)

p.s. 將全部檔案連sql file upload to 第二間hosting 公司便正常
     (那間公司用MySQL伺服器版本: 5.0.67-msl-usrs-icd1-log, Web server : MySQL 客戶端版本: 5.0.67 , phpMyAdmin : 版本資訊: 3.2.0, OS : Debian ,
     唔得個間用Enterprise + CPanel, 最離奇係用remote MySQL係得個間hosting, 結果中文都無法顯示,同樣英文數字都無問題,In a conlusion,總之用個間hosting
     輸入中文都無法在utf8網頁顯示正常)

thx

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #3 於: 2009-06-28 20:21 »
已在網上刨了成個禮拜文,用盡各種離奇方法都無法成功,開始想放棄了 : (

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #4 於: 2009-06-29 10:12 »
如果不要用你的網頁, 直接在 phpMyAdmin 輸入中文資料(utf8 或 big5)到資料表, 結果如何呢?


lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #5 於: 2009-07-04 11:52 »
yamaka  :)
如果在phpMyAdmin裡面輸入中文字,在裡面跟網頁(output.php)上都顯示正常!

如果說input.php未能正常save as utf8 format,那麼為什麼把檔案+SQL File upload to another web hosting co 便正常顯示utf8中文字呢, ...謝!!!

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #6 於: 2009-07-04 14:21 »
yamaka  :)
如果在phpMyAdmin裡面輸入中文字,在裡面跟網頁(output.php)上都顯示正常!

如果說input.php未能正常save as utf8 format,那麼為什麼把檔案+SQL File upload to another web hosting co 便正常顯示utf8中文字呢, ...謝!!!

只能猜測, input.php 收到的資料不是 utf8...
將要存入DB的資料直接印出來, 看看結果是怎樣
並查一下瀏覽器使用哪一種字元集能正確顯示這些中文字..

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #7 於: 2009-07-04 17:00 »
yamaka  :)
如果在phpMyAdmin裡面輸入中文字,在裡面跟網頁(output.php)上都顯示正常!

如果說input.php未能正常save as utf8 format,那麼為什麼把檔案+SQL File upload to another web hosting co 便正常顯示utf8中文字呢, ...謝!!!

只能猜測, input.php 收到的資料不是 utf8...
將要存入DB的資料直接印出來, 看看結果是怎樣
並查一下瀏覽器使用哪一種字元集能正確顯示這些中文字..


Dear Dr. Yamaka ,

"將要存入DB的資料直接印出來, 看看結果是怎樣"(不好意思,我只是個PHP菜白鳥,不太明白你的意思,你是不是說不經MySQL儲存資料,將資料寫在session裡,然後把它print出來,還是其他意思,可否詳解....謝謝!!!).

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #8 於: 2009-07-04 17:51 »
"將要存入DB的資料直接印出來, 看看結果是怎樣"(不好意思,我只是個PHP菜白鳥,不太明白你的意思,你是不是說不經MySQL儲存資料,將資料寫在session裡,然後把它print出來,還是其他意思,可否詳解....謝謝!!!).


就是在接收到網頁傳送過來的資料後
直接 print 或 echo 出來, 先不要存入DB

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #9 於: 2009-07-07 15:24 »
現在重新整理我的問題(使大家更加容易明白)。 謝謝大家幫忙!! ...

[img align=left width=300]http://viewmorepics.myspace.com/index.cfm?fuseaction-viewImage&friendID=486412357&albumID=234775&imageID=1158610[/img]

在網頁(input.php)上,輸入中文會變空白,輸入英文或數字便正常,輸入中文加英文加數字,全都便為空白,把欄位型態改為varbinary,中文位置變做四方.(如果upload all file to another hosting

co(using MySQl 5), 一齊便正常.

開發工具用ultraedit save as utf8 no bom

我的hosting公司用phpMyAdmin - 2.11.9.5, MySQL 客戶端版本: 4.1.22 , 伺服器版本: 5.0.81-community, MySQL 文字編碼: UTF-8 Unicode (utf8) =>default setting. support PHP 5.29
我全部校對都用utf8_unicode_ci(亦試過全部轉用utf8_general_ci,結果都不成功).
[img align=left width=300]http://viewmorepics.myspace.com/index.cfm?fuseaction-viewImage&friendID=486412357&albumID=234775&imageID=1166629[/img]

[img align=left width=300]http://viewmorepics.myspace.com/index.cfm?fuseaction-viewImage&friendID=486412357&albumID=234775&imageID=1168199[/img]

[img align=left width=300]http://viewmorepics.myspace.com/index.cfm?fuseaction-viewImage&friendID=486412357&albumID=234775&imageID=1170637[/img]

以下是程式的節錄 :

connSchool.php
-----------------------------
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_connSchool = "localhost";
$database_connSchool = "xxxx";
$username_connSchool = "xxxx";
$password_connSchool = "xxxx";
$connSchool = mysql_pconnect($hostname_connSchool, $username_connSchool, $password_connSchool) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");
?>


input.php
---------------------------------
<?php header("Content-Type: text/html; charset=utf-8");
require_once('Connections/connSchool.php');
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tbteachers (TeacherID, TeacherName, Department) VALUES (%s, %s, %s)",
GetSQLValueString($HTTP_POST_VARS['TeacherID'], "text"),
GetSQLValueString($HTTP_POST_VARS['TeacherName'], "text"),
GetSQLValueString($HTTP_POST_VARS['Department'], "text"));

$Result1 = mysql_query($insertSQL, $connSchool) or die(mysql_error());

$insertGoTo = "output.php";
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
<html>
<head>
<title>新增教師資料</title>
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />
</head>
<body>
<h1>新增教師資料</h1>
<form name="form1" method="POST" action="<?php echo $editFormAction; ?>">
<table border="0">
<tr>
<td align="right">身分證字號:</td>
<td> <input name="TeacherID" type="text" id="TeacherID" size="10" maxlength="10"></td>
</tr>
<tr>
<td align="right">姓名:</td>
<td> <input name="TeacherName" type="text" id="TeacherName" size="10" maxlength="8"></td>
</tr>
<tr>
<td align="right">系所:</td>
<td> <input name="Department" type="text" id="Department" size="20" maxlength="20"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="新增資料">
<input type="reset" name="Submit2" value="清除重來"></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>


output.php
--------------------------------
<?php header( "Content-type: text/html; charset=utf-8");
require_once('Connections/connSchool.php');
$currentPage = $HTTP_SERVER_VARS["PHP_SELF"];
$maxRows_rsTable = 20;
$pageNum_rsTable = 0;
if (isset($HTTP_GET_VARS['pageNum_rsTable'])) {
$pageNum_rsTable = $HTTP_GET_VARS['pageNum_rsTable'];
}
$startRow_rsTable = $pageNum_rsTable * $maxRows_rsTable;

mysql_select_db($database_connSchool, $connSchool);
$query_rsTable = "SELECT * FROM tbteachers";
$query_limit_rsTable = sprintf("%s LIMIT %d, %d", $query_rsTable, $startRow_rsTable, $maxRows_rsTable);
$rsTable = mysql_query($query_limit_rsTable, $connSchool) or die(mysql_error());
$row_rsTable = mysql_fetch_assoc($rsTable);

if (isset($HTTP_GET_VARS['totalRows_rsTable'])) {
$totalRows_rsTable = $HTTP_GET_VARS['totalRows_rsTable'];
} else {
$all_rsTable = mysql_query($query_rsTable);
$totalRows_rsTable = mysql_num_rows($all_rsTable);
}
$totalPages_rsTable = ceil($totalRows_rsTable/$maxRows_rsTable)-1;

$queryString_rsTable = "";
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
$params = explode("&", $HTTP_SERVER_VARS['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_rsTable") == false &&
stristr($param, "totalRows_rsTable") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_rsTable = "&" . implode("&", $newParams);
}
}
$queryString_rsTable = sprintf("&totalRows_rsTable=%d%s", $totalRows_rsTable, $queryString_rsTable);
?>
<html>
<head>
<title>瀏覽教師資料表</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<h1>瀏覽教師資料表</h1>
<table border="1" cellpadding="3" cellspacing="0" bordercolor="#000000">
<tr>
<td>身分證字號</td>
<td>姓名</td>
<td>科系</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_rsTable['TeacherID']; ?></td>
<td><?php echo $row_rsTable['TeacherName']; ?></td>
<td><?php echo $row_rsTable['Department']; ?></td>
</tr>
<?php } while ($row_rsTable = mysql_fetch_assoc($rsTable)); ?>
</table>
<p>&nbsp; 記錄 <?php echo ($startRow_rsTable + 1) ?> - <?php echo min($startRow_rsTable + $maxRows_rsTable, $totalRows_rsTable) ?> 共 <?php echo $totalRows_rsTable ?> 筆
<table border="0" width="50%" align="center">
<tr>
<td width="23%" align="center"> <?php if ($pageNum_rsTable > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rsTable=%d%s", $currentPage, 0, $queryString_rsTable); ?>">第一頁</a>
<?php } // Show if not first page ?> </td>
<td width="31%" align="center"> <?php if ($pageNum_rsTable > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_rsTable=%d%s", $currentPage, max(0, $pageNum_rsTable - 1), $queryString_rsTable); ?>">上一頁</a>
<?php } // Show if not first page ?> </td>
<td width="23%" align="center"> <?php if ($pageNum_rsTable < $totalPages_rsTable) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rsTable=%d%s", $currentPage, min($totalPages_rsTable, $pageNum_rsTable + 1), $queryString_rsTable); ?>">下一頁</a>
<?php } // Show if not last page ?> </td>
<td width="23%" align="center"> <?php if ($pageNum_rsTable < $totalPages_rsTable) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_rsTable=%d%s", $currentPage, $totalPages_rsTable, $queryString_rsTable); ?>">最後一頁</a>
<?php } // Show if not last page ?> </td>
</tr>
</table></p>
</body>
</html>
<?php
mysql_free_result($rsTable);
?>

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #10 於: 2009-07-07 18:45 »
代碼: [選擇]
$Result1 = mysql_query($insertSQL, $connSchool) or die(mysql_error());
這行之前先將 $insertSQL 印出來, 看看內容是什麼?

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #11 於: 2009-07-10 11:42 »
Dr. yamaka ,

如果不把資料輸入資料庫,只把它echo出來,中文字會變成四方形.
不過如果我把input_echo.php檔案upload to another hosting co, 中文字便正常echo出來,沒有問題,究竟出了什麼事,請大家幫幫忙...謝謝!


input_echo.php
--------------------------------

<?php
require_once('Connections/connSchool.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}


if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO tbteachers (TeacherID, TeacherName, Department) VALUES (%s, %s, %s)",
                       GetSQLValueString($HTTP_POST_VARS['TeacherID'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['TeacherName'], "text"),
                       GetSQLValueString($HTTP_POST_VARS['Department'], "text"));                     
                       
                       
/* mysql_select_db($database_connSchool, $connSchool);
   
 
  $Result1 = mysql_query($insertSQL, $connSchool) or die(mysql_error());
 
  $insertGoTo = "output_echo.php";
  if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo)); */
 
 
  echo $HTTP_POST_VARS['TeacherID'];
  echo $HTTP_POST_VARS['TeacherName'];
  echo $HTTP_POST_VARS['Department'];
 
 
 
}
?>
<html>
<head>
<title>新增教師資料</title>
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8 />

</head>

<body>
<h1>新增教師資料</h1>
<form name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  <table border="0">
    <tr>
      <td align="right">身分證字號:</td>
      <td> <input name="TeacherID" type="text" id="TeacherID" size="10" maxlength="10"></td>
    </tr>
    <tr>
      <td align="right">姓名:</td>
      <td> <input name="TeacherName" type="text" id="TeacherName" size="10" maxlength="8"></td>
    </tr>
    <tr>
      <td align="right">系所:</td>
      <td> <input name="Department" type="text" id="Department" size="20" maxlength="20"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="新增資料">
        <input type="reset" name="Submit2" value="清除重來"></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1">
</form>
</body>
</html>

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #12 於: 2009-07-10 11:50 »
瀏覽器網頁編碼有指定 UTF-8 嗎?
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #13 於: 2009-07-10 12:05 »
有, (如果本身o既字元唔係UTF-8,為什麼upload to another hosting co d字又正常既,check過,browser view 係select緊utf8顯示,如果我揀big5,反而成個畫面變空白,thanks.... )  :(

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #14 於: 2009-07-10 12:43 »
有, (如果本身o既字元唔係UTF-8,為什麼upload to another hosting co d字又正常既,check過,browser view 係select緊utf8顯示,如果我揀big5,反而成個畫面變空白,thanks.... )  :(

樓主最好是一步一步檢查資料傳遞過程
看看到底是哪個環節的字元集出問題
在最後結果打轉也是得不到結果啊~


lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #15 於: 2009-07-10 14:35 »
有, (如果本身o既字元唔係UTF-8,為什麼upload to another hosting co d字又正常既,check過,browser view 係select緊utf8顯示,如果我揀big5,反而成個畫面變空白,thanks.... )  :(

樓主最好是一步一步檢查資料傳遞過程
看看到底是哪個環節的字元集出問題
在最後結果打轉也是得不到結果啊~



是的,我現在就去嘗試其他方法,謝!

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #16 於: 2009-07-10 17:20 »
有, (如果本身o既字元唔係UTF-8,為什麼upload to another hosting co d字又正常既,check過,browser view 係select緊utf8顯示,如果我揀big5,反而成個畫面變空白,thanks.... )  :(

樓主最好是一步一步檢查資料傳遞過程
看看到底是哪個環節的字元集出問題
在最後結果打轉也是得不到結果啊~




dr. yamaka , 已將測試程序簡化為echo php檔案

input_pure_echo2.php
-------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無標題文件</title>
</head>
<body>
<?
if($_POST['txt']){
 echo $_POST['txt'];
}
?>
<form action="" method="post">
<input name="txt" type="text"><input type="submit" value="送出">
</form>
</body>
</html>
 
---------------------------------------------
我先將測試的結果說明一下。

第一次:
我先用正常的方式輸入中文,並送出。果然沒辦法正常。但我也發現他送出的頁面內容(原始碼)也不正常了。
經過我轉換編碼後,我發現他是送出lain1(iso編碼)的內容,然後utf8顯示。

第二次:
我推算第一次的測試理念,故意先將網頁編碼改成iso編碼。這時送出鍵會變成亂碼。不管它。
依然輸入中文。然後送出。果然~~~可以顯示正常的中文了。但網頁編碼又會跳回來utf8。

依照上面的測試,也就是說其頁面的內容會用iso編碼為主。但顯示也會轉成utf8。由於這樣一來一往的原因。
變成亂碼。

我記得這跟http.conf還是php.ini中的設定有關,但我想不起來。
 
請問大大是否有其他解決方法(例如透過更改phpMyAdmin的設定方法)...謝!

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #17 於: 2009-07-10 17:32 »
什麼是檔案編碼?
什麼是網頁顯示編碼?
什麼是資料庫編碼?
什麼是資料庫傳送編碼?
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

lzn20061228

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #18 於: 2009-07-10 18:12 »
剛才測試,在phpMyAdmin裡面,將所有校對更改為latin1_general_ci,另外將input,output & connection 的charset更改為iso-8859-1.

input的畫面
http://viewmorepics.myspace.com/index.cfm?fuseaction=viewImage&friendID=486412357&albumID=234775&imageID=3224537


ouput的晝面
http://viewmorepics.myspace.com/index.cfm?fuseaction=viewImage&friendID=486412357&albumID=234775&imageID=3224540


只有部位中文字可以正常顯示(不是整句)

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
回覆: 無法正常顯示PHP utf8 中文網頁
« 回覆 #19 於: 2009-07-10 18:23 »
你需要 UTF-8 ,那設定 ISO-8859-1 幹嗎?

要用 UTF-8 就從頭到尾都是 UTF-8 就一定不會錯
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫