sqlserver 2012 binary字段转换varchar,英文、数字正常,中文乱码

weixin_36820909 2016-11-25 04:41:51
----如下代码 字段[text]是binary类型
SELECT [text] ,CONVERT(varchar(4000),[text])
FROM [Common].[imp_tttxt010] with (nolock)
where ctxt = 12609361 and seqe = 1
...全文
1307 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43397783 2018-10-15
  • 打赏
  • 举报
回复
我对sqlserver不太熟,
请问14楼说的是数据库的嘛?
数据库SQLSERVER是Latin1_General_100_CS_AS_KS_WS的排序规则,
编码是CP936,
字段的是unicode,
请问有什么办法转化嘛?



weixin_43397783 2018-10-15
  • 打赏
  • 举报
回复
客户端存的 binary 尽量 客户端取 转换也方便

回复10楼:
客户端对我们来说是封装的,
没有办法看到里面的逻辑,
请问还有其他办法嘛?
zjcxc 2018-10-15
  • 打赏
  • 举报
回复
引用 12 楼 weixin_43397783 的回复:
你先用程序处理,每一种编码都试一下,如果有一种可以
那就制作一个sqlclr函数或存储过程
这样,在数据库中调用sqlclr函数就可以转换了


回复9楼,
各个排序规则都试了,都是乱码,
请问还有其他方式嘛?

编码是编码,排序规则是排序规则,所以先要知道的是编码
weixin_43397783 2018-10-15
  • 打赏
  • 举报
回复
你先用程序处理,每一种编码都试一下,如果有一种可以
那就制作一个sqlclr函数或存储过程
这样,在数据库中调用sqlclr函数就可以转换了


回复9楼,
各个排序规则都试了,都是乱码,
请问还有其他方式嘛?
zjcxc 2018-10-15
  • 打赏
  • 举报
回复
至少得知道 binary 中存储的数据编码
  • 打赏
  • 举报
回复
客户端存的 binary 尽量 客户端取 转换也方便
weixin_43397783 2018-10-15
  • 打赏
  • 举报
回复
对应的正确内容就是“1.TEST301测试场景”,
麻烦看下
zjcxc 2018-10-15
  • 打赏
  • 举报
回复
你必须 提供这个对应的正确内容

数据库后台存的binary内容如下,
0x312E544553543330319BBDDACB9BBE97D59BBDAEBA9BBDCCEF0D0A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
weixin_43397783 2018-10-15
  • 打赏
  • 举报
回复
客户端的编码不清楚的,
客户端对我们来说是封装的,

比如内容是“1.TEST301测试场景”
数据库后台存的binary内容如下,
0x312E544553543330319BBDDACB9BBE97D59BBDAEBA9BBDCCEF0D0A202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020

自己转化的内容:
0x312E54455354333031B2E2CAD4B3A1BEB0

自己转化的BINARY内容可以再转化为中文,但是系统存的后台的就只有英文的正常转化了,
麻烦帮忙看下是哪里的问题啊,
谢谢


zjcxc 2018-10-15
  • 打赏
  • 举报
回复
客户端是用什么编码存进去的,如果不清楚,给出一段 VARBINARY 的内容和正确的转换,再数据这两者来猜编码类型
吉普赛的歌 2018-10-13
  • 打赏
  • 举报
回复
引用 8 楼 weixin_43397783 的回复:
楼主这是INFOR的文本信息表吧?
我们要从数据库取出二进制存储的文本转化成中文显示在报表中,这样的话就不能用程序转换了。
现在从sqlserver数据库中取出的二进制数据转化后的英文是正常的,就是中文乱码。
楼主问题解决了嘛?


你先用程序处理,每一种编码都试一下,如果有一种可以
那就制作一个sqlclr函数或存储过程
这样,在数据库中调用sqlclr函数就可以转换了
weixin_43397783 2018-10-13
  • 打赏
  • 举报
回复
楼主这是INFOR的文本信息表吧?
我们要从数据库取出二进制存储的文本转化成中文显示在报表中,这样的话就不能用程序转换了。
现在从sqlserver数据库中取出的二进制数据转化后的英文是正常的,就是中文乱码。
楼主问题解决了嘛?
qq_25073223 2018-10-12
  • 打赏
  • 举报
回复
参照二楼的方法吧
先用程序把二进制取出来,然后在程序中转换吧
weixin_43397783 2018-10-12
  • 打赏
  • 举报
回复
楼主问题解决了嘛?同问此问题啊,sqlserver数据中抓取文本信息中文乱码
weixin_36820909 2016-11-28
  • 打赏
  • 举报
回复
引用 1 楼 shoppo0505 的回复:
察看下数据库的排序是不是Chinese_PRC_CI_AS
排序方式是 Latin1_General_CI_AS
weixin_36820909 2016-11-28
  • 打赏
  • 举报
回复
引用 2 楼 tcmakebest 的回复:
binary转字符串不要让数据库来做,要让程序来做,因为这种转换有几种不同的编码的,最好是用UTF8
有没有具体的例子,发来参照一下,万分感谢!
weixin_36820909 2016-11-28
  • 打赏
  • 举报
回复
数据库排序方式是 Latin1_General_CI_AS
tcmakebest 2016-11-25
  • 打赏
  • 举报
回复
binary转字符串不要让数据库来做,要让程序来做,因为这种转换有几种不同的编码的,最好是用UTF8
shoppo0505 2016-11-25
  • 打赏
  • 举报
回复
察看下数据库的排序是不是Chinese_PRC_CI_AS

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧