首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查询Server数据库并获得不以问号形式出现的撇号?

如何查询Server数据库并获得不以问号形式出现的撇号?
EN

Stack Overflow用户
提问于 2011-04-13 17:53:35
回答 2查看 1.3K关注 0票数 0

不幸的是,我正在使用基于MSSQL的数据源,并试图将其集成到正在用PHP编写的自定义Drupal模块中。我的问题是,无论我使用什么样的包装函数,我都不能让撇号正确地出现在页面上。它们都变成了问号。此外,帝国也会做同样的事情。

我知道这是个编码问题。页面是用UTF-8编码的,但是数据库是用SQL_Latin1_General_CP1_CI_AS编码的.我无法控制数据库结构,它不能被修改。我没有选择更改数据库中的所有值。

如何以未损坏的形式访问这些数据,或者至少让PHP正确地将其吐出来?

我尝试过,但没有成功: utf_encode utf_decode html_entities I几个自定义编码的str_replace函数MSSQL没有设置名称函数

帮助!

EN

回答 2

Stack Overflow用户

发布于 2011-04-13 18:59:20

您是否尝试过显式地转换输出?例如:

代码语言:javascript
复制
select col1 COLLATE Latin1_General_100_CI_AS from table1

根据MSDN上的排序规则和Unicode支持页面,Unicode5.0是受支持的,尽管您可能需要强制使用较新的*_100排序规则来利用新特性。另一页声称Server不支持UTF-8,但支持UTF-16。

您可以使用内置的TVF仔细阅读支持排序规则的整个列表:

代码语言:javascript
复制
select * from fn_helpcollations()
票数 1
EN

Stack Overflow用户

发布于 2011-04-25 16:32:36

当您使用不支持新排序规则的较早版本的Server时,您是否尝试将该数据转换为NVARCHAR?

例如:

代码语言:javascript
复制
SELECT CONVERT(NVARCHAR(MAX), col1) FROM table1

管理客户/服务器代码页之间的数据转换上有一个MSDN页面,它提供了一些通用信息。一般来说,建议的重点似乎是修改连接的具体内容或数据库结构(您说,考虑到当前的限制,这是不可能的)。具体来说,

对于特定于代码页的服务器来说,最好的选择是只与使用相同代码页的客户端通信。第二个最佳选择是使用另一个具有几乎相同字符集的代码页。..。如果必须使用不同的代码页与客户端通信,所支持的解决方案是将数据存储在Unicode列中。如果这些选项中的任何一种不可行,则另一种选择是使用二进制、var二进制或var二进制(Max)数据类型将数据存储在二进制列中。然而,二进制数据只能按二进制顺序进行排序和比较。这使得它不像字符数据那么灵活。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5653442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档