SQL Server 2012中的字符编码问题

时间:2018-07-05 14:20:40

标签: json sql-server character-encoding

我的Web应用程序具有:

  1. 开发存储过程以接收请求和发送响应(全部为JSON格式)的SQL Server数据库
  2. 处理交换的servlet(Tomcat)
  3. Web客户端应用程序。

该servlet记录从客户端收到的每个请求以及从服务器收到并发送到客户端的响应。

有些响应(来自数据库)包含从某些表中提取的特殊字符(例如希腊字母,摄氏度符号等)。

检查表的内容(从中检索这些符号)时,它们均按预期显示。

当在servlet的日志中检查响应(包含上述特殊字符)时,到处都有特殊字符,并且控制字符显示为JSON的一部分,显然,它们被取消了资格。

我认为问题出在“ TABLE”和响应消息提交之间,但无法确定问题出在哪里。

数据库的当前排序规则是SQL_Latin1_General_CP1255_CI_AS。我找到了一些文档,其中提到了_SC归类选项的引入,但是我没有在列表中看到它们(数据库属性)。

我在哪里可以找到问题,并(甚至更好)提出解决方案?

编辑[跟随汤姆的评论]

不需要任何代码,因为它会添加不需要的信息。

情况是:

  1. 存储过程会生成一个JSON,当在Management Studio中打印该JSON时,它会正确显示特殊字符(例如希腊语)。
  2. 在servlet(用JAVA编写)上,从存储过程接收到的响应被记录到一个文件中,其中特殊字符显示为CONTROL CHARACTERS,
  3. 所有涉及的SQL变量均声明为NVARCHAR(<size>)类型。
  4. 通过 不合格 ,我的意思是JSON变成了非法(因此JavaScript标记了错误)。

因此,问题将是:

  1. SQL Server中是否有一种方法可以将那些特殊字符转换为某种表示形式,这些表示形式可以从DB一直清晰地传输到JavaScript,并且可以正确地接受为合法的JSON?或
  2. 是否有可以解决问题的任何配置(数据库,连接,Tomcat,JavaScript的POST标头)?

0 个答案:

没有答案