Tôi đang tạo một tệp XML với PHP bằng cách sử dụng DomDocument và tôi cần xử lý các ký tự Châu Á. Tôi đang kéo dữ liệu từ máy chủ MSSQL2008 bằng trình điều khiển pdo_mssql và tôi áp dụng utf8_encode() trên các giá trị thuộc tính XML. Tất cả mọi thứ hoạt động tốt miễn là không có ký tự đặc biệt.Mã hóa SQL_Latin1_General_CP1_CI_AS thành UTF-8
Máy chủ là MS SQL Server 2008 SP3
Cơ sở dữ liệu, bảng và cột chiếu đều SQL_Latin1_General_CP1_CI_AS
Tôi đang sử dụng PHP 5.2.17
Dưới đây là đối tượng PDO của tôi:
$pdo = new PDO("mssql:host=MyServer,1433;dbname=MyDatabase", user123, password123);
Truy vấn của tôi là SELECT cơ bản.
Tôi biết việc lưu trữ các ký tự đặc biệt vào các cột SQL_Latin1_General_CP1_CI_AS không phải là tuyệt vời, nhưng tốt nhất là làm cho nó hoạt động mà không thay đổi nó, bởi vì các chương trình không phải PHP đã sử dụng cột đó và nó hoạt động tốt. Trong SQL Server Management Studio tôi có thể thấy các ký tự Châu Á một cách chính xác.
Xem xét tất cả các chi tiết ở trên, tôi nên xử lý dữ liệu như thế nào?
Bạn đã thử ['utf8_encode()'] (http://ca3.php.net/manual/en/function.utf8-encode.php) chưa? Theo hướng dẫn: 'Mã hóa chuỗi ISO-8859-1 thành UTF-8'. –
Tất nhiên, đó là những gì tôi hiện đang làm, nhưng các ký tự Châu Á xuất hiện dưới dạng '?'. Ngay cả khi tôi chỉ chạy SELECT và sau đó đưa dữ liệu vào một tệp (utf8_encode hay không), các ký tự Châu Á kết thúc bằng '?' Trong tập tin. – SGr
Nó thực sự làm tôi ngạc nhiên rằng bạn thực sự có thể mã hóa các ký tự Châu Á trong 'LATIN1'. 'LATIN1' chỉ để mã hóa các ký tự châu Âu ... –