Fetching Chinese Text from Database to Web

This section describes how to fetch Chinese text from MySQL database and send it to a Web page through Apache.

The next test I did was to try to move Chinese text from MySQL database to a Web page without changing any default settings of MySQL session variables and HTML document headers. In the test PHP script below, I used Hex numbers to insert some Chinese characters in UTF-8, GBK, GB2312, and Big5 encodings. See other chapters in this book on how to insert Chinese characters into MySQL database.

<?php 
#- MySQL-Web-Chinese-Default.php
#- Copyright (c) 2015, HerongYang.com, All Rights Reserved.
#
  $con = mysql_connect("localhost", "Herong", "TopSecret");
  $ok = mysql_select_db("HerongDB", $con);
  $test_name = "Moving Chinese Text from Database to Web";
  print('<html>');
  print('<body><pre>'."\n");

# Delete the record
  $sql = "DELETE FROM Comment_Mixed WHERE Test_Name ='$test_name'";
  mysql_query($sql, $con);
  print("\nNumber of rows deleted: ".mysql_affected_rows()."\n");

# Build the SQL INSERT statement
  $sql = <<<END_OF_MESSAGE
INSERT INTO Comment_Mixed (Test_name, String_ASCII, 
    String_Latin1, String_UTF8, String_GBK, String_Big5)
  VALUES ('$test_name', 'Television', 
    X'54E96CE9766973696F6E', 
    X'E794B5E8A786E69CBA2FE99BBBE8A696E6A99F', 
    X'B5E7CAD3BBFA', 
    X'B971B5F8BEF7');
END_OF_MESSAGE;
  mysql_query($sql, $con);
  print("\nNumber of rows inserted: ".mysql_affected_rows()."\n");

# Fetch text data from database
  $sql = "SELECT * FROM Comment_Mixed"
    . " WHERE Test_Name = '$test_name'";
  $res = mysql_query($sql, $con);

# Send text data output
  if ($row = mysql_fetch_array($res)) {
    print("\nTest Name = ".$row['Test_Name']."\n");
    print("   String_ASCII: ".$row['String_ASCII']."\n");
    print("   String_Latin1: ".$row['String_Latin1']."\n");
    print("   String_UTF8: ".$row['String_UTF8']."\n");
    print("   String_GBK: ".$row['String_GBK']."\n");
    print("   String_Big5: ".$row['String_Big5']."\n");
  }  
  mysql_free_result($res);

  mysql_close($con); 
  print('</pre></body></html>');
?>

The output is displayed in the picture below:
Displaying Chinese failed with default settings

Chinese characters in UTF-8, GBK(GB2312), and Big5 encodings are all failed to show on the Web page. There are possible causes of this error based on what I have from previous tests:

See the next section for corrections on this test PHP script.

Last update: 2015.

Table of Contents

 About This Book

 PHP Installation on Windows Systems

 Integrating PHP with Apache Web Server

 charset="*" - Encodings on Chinese Web Pages

 Chinese Characters in PHP String Literals

 Multibyte String Functions in UTF-8 Encoding

 Input Text Data from Web Forms

 Input Chinese Text Data from Web Forms

 MySQL - Installation on Windows

 MySQL - Connecting PHP to Database

 MySQL - Character Set and Encoding

 MySQL - Sending Non-ASCII Text to MySQL

Retrieving Chinese Text from Database to Web Pages

 Steps and Application Components Involved

 Fetching ASCII Text from Database to Web

Fetching Chinese Text from Database to Web

 Fetching Chinese Text from Database to Web in UTF-8

 Fetching Chinese Text from Database to Web in GBK

 Fetching Chinese Text from Database to Web in Big5

 Summary - Fetching Chinese Text from Database to Web

 Input Chinese Text Data to MySQL Database

 References

 PDF Printing Version