2009-11-04 73 views
2

我試圖讓用戶在HTML表單(使用java處理)中的某些字段中輸入希伯來字符。我做了一些研究,而下面的標記需要的HTML文檔的一部分,這是明顯的:將外文字符傳遞到數據庫/從數據庫傳遞

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

也正在做,我有以下結果: 當用戶輸入進入希伯來文字段,它將以希伯來語保存並正確顯示在屏幕上。但是,如果我查看數據庫中的數據,則無法理解。此外,如果我嘗試將它輸出到一個文件(使用iText),它是胡言亂語。但是,如果我直接將數據輸入到數據庫中,則數據庫中的希伯來語以及輸出文件中都可以讀取數據,但在屏幕上顯示爲亂碼。

樣品: 如果用戶在瀏覽器中輸入它,它看起來是這樣的:עִבְרִית

相同的字符串,在數據庫中輸入時,會出現這樣的畫面:Ѱ

當在數據庫中查找,瀏覽器輸入的字符串如下所示:×¢O'×Ö°×××O'ª

手動輸入的字符串顯示這樣的:עִבְרִית(雖然它出現左而希伯來語是一種從右到左的語言;當在這裏複製和粘貼時,它看起來是正確的,從右到左)

很明顯,數據庫和瀏覽器不是用這種編碼「說話」相同的語言。我正在使用SQL Server,並沒有對數據庫進行任何更改,除了確保將問題字段定義爲nvarchar字段。我錯過了什麼?

回答

1

聽起來像數據庫編碼設置不正確。如果數據庫僅期望8859-1(一種通用的默認編碼方案),那麼它會嘗試將utf-8變爲8859-1。這通常不能很好地工作。

下面是從MS在這個問題上的一篇文章: http://support.microsoft.com/kb/232580

拉里

+0

感謝您的幫助和紐帶。我閱讀這篇文章,並解釋了這個問題,但我仍然無法弄清楚如何解決這個問題。我怎樣才能將HTML更改爲使用UTF-16(本文聲稱使用的UCS-2由SQL Server 2000使用),或者讓SQL Server瞭解UTF-8?我試圖將字符串轉換爲UTF-16,但它似乎不起作用 – twpc 2009-11-04 19:06:15

+0

您是否嘗試將MS字段設置爲鍵入BINARY/VARBINARY/IMAGE,如MS文章所示(選項4)? – 2009-11-04 23:26:09

+0

是的,我做了,它沒有讓它在數據庫中可讀。但是,我發現這篇文章包含了將數據轉換爲UTF-8或從UTF-8轉換爲UTF-8所需的代碼......有趣的是,轉換工作在UTF-8和ISO-8859-1之間,而不是UTF-8和UTF-16,正如MS上面的文章中所暗示的那樣。對於有相同問題和使用Java的人來說,這是一個必讀內容: http://www.jguru.com/faq/view.jsp?EID=137049 – twpc 2009-11-05 02:12:23