[英]Problems encoding/decoding/inserting French accented characters
我正在嘗試將以下字符串寫入數據庫:
打印時,揚聲器格柵會產生波紋。
“é”字符使我非常頭疼。 我不能使用htmlentities
,因為數據庫是桌面應用程序的一部分。 我的HTML是UTF-8。
在嘗試調試該問題的過程中(持續5天),我使用桌面應用程序向數據庫中插入了相同的字符串,除了有問題的字符顯示為“?”之外,該字符串似乎正常運行 -甚至使用htmlentities
或utf8_encode
。
這些是我在嘗試插入字符串時收到的錯誤消息:
警告 :PDOStatement :: execute()[pdostatement.execute]:消息:字符串“ speaker grille moir”之前的右引號引起來。 (嚴重性15)
警告 :PDOStatement :: execute()[pdostatement.execute]:常規SQL Server錯誤:檢查來自SQL Server的消息(嚴重性15)
警告 :PDOStatement :: execute()[pdostatement.execute]:消息:第1行:“揚聲器格柵波紋”附近的語法不正確。 (嚴重性15)
請幫忙!
更新 (2011-01-18)
顯然,數據庫字符編碼為SQL_Latin1_General_CP1_CI_AS
。 這是等效於ISO-8859-1的SQL Server嗎? ISO-8859-1 PHP不是默認的字符編碼嗎?
更新2 (2011-01-18)
很近! 在DSN字符串中包含charset=UTF-8
允許我插入'é'字符,並且該字符正確顯示在桌面應用程序中。 它仍然顯示為“?” 即使在網頁中,即使我使用的是$text_block = htmlentities( $text_block, ENT_NOQUOTES, 'UTF-8' );
在預格式化功能中。
確保使用PDO綁定正確傳遞動態字符串,以便正確地對它們進行轉義。
還要確保您的數據庫連接也位於UTF-8字符集中。
您在數據庫/字段中的集合也應該設置為UTF-8,但是,如果不這樣,則可能不會導致這種錯誤。
您是否嘗試在數據庫中使用帶有重音敏感排序規則的NVARCHAR數據類型? 在您的數據庫中進行以下測試,並告訴我們是否可行:
-揚聲器在打印時出現網紋雲紋效果。 如果object_id('tempdb.dbo。#test')不為空drop table #test create TABLE #test(test NVARCHAR(1000)collate Latin1_General_CI_AS)
插入#test(test)中,選擇“打印時的揚聲器格柵波紋效果”。
從#test中選擇*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.