10/10/2018, 09:49
Unicode trong PHP - Ms SQL
Số là em dùng script php insert dữ liệu Unicode vào Ms SQL. Vào SQL Quẻy Analyzer xem, nó ra 1 đống rác. Nhưng khi dùng script php SELECT để lôi ra web page thì nó vẫn ra dúng nội dung lúc Insert.
Tui nhiên database trong project của em làm chung với bên software. Bên đó nếu người ta insert dữ liệu Unicode vào và hiển thị tốt trong Ms SQL thì khi bên em SELECT ra nó ra tè le, toàn dấu hỏi.
Có bác nào biết bệnh này xin cứu giúp.
(Apache Server của em chạy trên WinXP)
Tui nhiên database trong project của em làm chung với bên software. Bên đó nếu người ta insert dữ liệu Unicode vào và hiển thị tốt trong Ms SQL thì khi bên em SELECT ra nó ra tè le, toàn dấu hỏi.
Có bác nào biết bệnh này xin cứu giúp.
(Apache Server của em chạy trên WinXP)
Bài liên quan
$link = mysql_connect('_mysql_sever' ,'_mysql_name', '_mysql_pass');
mysql_set_charset('utf8', $link);
Các bạn ai gặp qua tình trạng này xin chỉ giúp heng, mình post code cho các bạn tham khảo
Code:
<?php
$myServer = "tames";
$myUser = "sa";
$myPass = "tsql";
$myDB = "test";
/connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");
//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");
//declare the SQL statement that will query the database
$query = "SELECT top 10 id , name ";
$query .= "FROM consultant ";
//execute the SQL query and return records
$result = mssql_query($query);
$numRows = mssql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";
//display the results
while($row = mssql_fetch_array($result))
{
echo "<li>" . $row["id"] . $row["name"] . $row["year"] . "</li>";
}
//close the connection
mssql_close($dbhandle);
Đoạn code này thực thi hiển thị dữ liệu dưới dạng sau:
10 Rows Returned
# 153 Luong Th? Kim Chi
# 154 Ph?m Th? Bích Loan
# 013 Nguy?n Th? Ð?c Di?u
# 154 Tr?n Tr?ng An
# 171 Lê Thanh Tu?n
# 191 H? Ti?n Dung
# 201 Tr?n Th? Thanh Thu?
# 219 Lê Quang Hung
# 232 Tr?n Th? Hoàng Liên
# 268 Tr?n Van Trà
Vấn đề mình gặp là vậy đó, mong các bạn ai gặp rồi chỉ giúp cách khắc phục, cảm ơn các bạn
(Nếu mình post sai box,admin chuyển giúp mình heng!)
Ngoài ra nếu để trường dữ liệu kiểu ntext hoặc nvachar(max) thì không thể select ra được. nó báo lỗi:
Warning: mssql_query() [function.mssql-query]: message: Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (severity 16) in ...
MS SQL driver bản 1.1 thì có hỗ trợ đấy. Build lên mà dùng. Chỉ chạy trên Windows thôi. Không bao giờ chạy trên Linux cả.
Nếu ko cài được extension lên server thì dùng COM/DCOM mà xử lý (thông qua ADO). Tôi có kinh nghiệm handon trong việc chuyển đổi dữ liệu từ MS SQL 2005 sang MySQL nên có thể xác nhận là cách này làm được