2009-11-04 70 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