Sql server 向数据库传递外语字符/从数据库传递外语字符

Sql server 向数据库传递外语字符/从数据库传递外语字符,sql-server,utf-8,character-encoding,Sql Server,Utf 8,Character Encoding,我试图允许用户以HTML形式(使用java处理)在某些字段中输入希伯来文字符。我做了一些研究,很明显,以下标记需要成为HTML文档的一部分: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 这样做之后,我得到了以下结果: 当用户在输入字段中输入希伯来语文本时,它将以希伯来语正确保存并显示在屏幕上。然而,如果我查看数据库中的数据,它是不可理解的。此外,如果我试图将它输出到一个文件(使用iT

我试图允许用户以HTML形式(使用java处理)在某些字段中输入希伯来文字符。我做了一些研究,很明显,以下标记需要成为HTML文档的一部分:

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

这样做之后,我得到了以下结果: 当用户在输入字段中输入希伯来语文本时,它将以希伯来语正确保存并显示在屏幕上。然而,如果我查看数据库中的数据,它是不可理解的。此外,如果我试图将它输出到一个文件(使用iText),那就是胡言乱语。但是,如果我直接将数据输入数据库,它在数据库中以及在输出文件中都是可读的,但在屏幕上却是乱七八糟的

样本: 如果用户在浏览器中输入,则显示如下:עִבְרִית

在数据库中输入时,相同的字符串在屏幕上显示如下:�Ѱ���

在查看数据库时,浏览器输入的字符串如下所示:×、ÖÖÖÖÖÖ収収××収

手动输入的字符串如下所示:עִבְרִית(尽管它从左到右显示,而希伯来语是一种从右到左的语言;复制并粘贴到此处时,它正确显示,从右到左)


显然,数据库和浏览器并不是用这种编码“谈论”同一种语言。我正在使用SQL Server,没有对数据库进行任何更改,只是确保相关字段定义为nvarchar字段。我遗漏了什么?

听起来数据库编码设置不正确。如果数据库只需要8859-1(一种常见的默认编码方案),那么它将尝试将utf-8转换为8859-1。这通常不起作用

以下是微软关于这个问题的一篇文章:


拉里

谢谢你的帮助和链接。我读了这篇文章,它解释了这个问题,但我仍然不知道如何解决它。我如何更改HTML以使用UTF-16(UCS-2,文章声称SQL Server 2000使用它)或使SQL Server理解UTF-8?我尝试将字符串转换为UTF-16,但似乎不起作用。您是否尝试按照MS文章的建议将db字段设置为BINARY/VARBINARY/IMAGE类型(选项4)?是的,我这样做了,它没有使其在数据库中可读。但是,我发现这篇文章包含了将数据转换成UTF-8或从UTF-8转换成UTF-8所需的代码。。。有趣的是,转换是在UTF-8和ISO-8859-1之间进行的,而不是在UTF-8和UTF-16之间进行的,正如上面MS的文章所暗示的那样。对于任何有相同问题并使用Java的人来说,这是一本必读的书:注意:阅读上面文章中的评论部分。这才是真正的帮助所在