我使用DomDocument生成一個PHP文件,我需要處理亞洲字符。我使用pdo_mssql驅動程序從MSSQL2008服務器提取數據,並對XML屬性值應用utf8_encode()。只要沒有特殊字符,一切都可以正常工作。將SQL_Latin1_General_CP1_CI_AS編碼爲UTF-8
該服務器的MS SQL Server 2008 SP3
數據庫,表和列排序規則都SQL_Latin1_General_CP1_CI_AS
我使用PHP 5.2.17
這裏是我的PDO對象:
$pdo = new PDO("mssql:host=MyServer,1433;dbname=MyDatabase", user123, password123);
我的查詢是一個基本的SELECT。
我知道在SQL_Latin1_General_CP1_CI_AS列中存儲特殊字符並不是很好,但理想情況下,它可以很好地工作而不改變它,因爲其他非PHP程序已經在使用該列並且工作正常。在SQL Server Management Studio中,我可以正確地看到亞洲字符。
考慮到上述所有細節,我應該如何處理數據?
你試過['utf8_encode()'](http://ca3.php.net/manual/en/function.utf8-encode.php)嗎?根據手冊:'將ISO-8859-1字符串編碼爲UTF-8'。 – 2012-04-12 14:00:37
當然,這就是我目前正在做的,但是它的亞洲字符顯示爲'?'。即使我只是運行SELECT,然後將數據放入文件(utf8_encode或不),亞洲字符最終爲'?'在文件中。 – SGr 2012-04-12 14:01:24
真的讓我感到驚訝,你實際上能夠在'LATIN1'中編碼亞洲字符。 'LATIN1'僅用於編碼歐洲字符...... – 2012-04-12 14:10:32