如何在 C# 中将 UNICODE 字符串转换为 MBCS?
我有一个 UNICODE 字符串(中文),我想将其转换回 MBCS,以便将其作为参数添加到 SQL 查询中。 (SQL Server 中的列为 varchar,因此这种转换对我来说是必要的)。
如何在 C# 中转换为 MBCS? 请帮忙。
谢谢, 普拉塞奥
I have a UNICODE string (chinese) which I want to convert back to MBCS so as to add it as a parameter to an SQL query. (the column in SQL Server in varchar and so this conversion is necessary for me).
How can I convert to MBCS in c#?
Please help.
Thanks,
Praseo
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
“MBCS”可以是多种编码。对于中国区域设置,它将是 代码页 936,GB 变体,您可以编码其字节使用:
如果您不是专门谈论 GB 编码,并且希望将任何多字节编码作为当前系统的默认编码,那么您可以使用默认(“ANSI”)编码,这将是 MBCS 编码
:获取你的字节数组在查询中,您必须:
1)最好使用带有基于字节的 SqlDbType 的参数,例如:
2)或者如果必须将其直接插入查询字符串,请将字节编码为十六进制文字,例如:
(这是非 ANSI 标准 SQL Server 语法)
“MBCS” could be a number of encodings. For the China locale, it would be code page 936, a GB-variant, and you could encode to its bytes using:
If you aren't specifically talking about GB encoding and want whatever multibyte encoding is the default for your current system, then you can just use the Default (“ANSI”) encoding which will be that MBCS encoding:
Now to get your byte array into the query you'll have to either:
1) best, use a parameter with a byte-based SqlDbType, eg:
2) orif you have to insert it directly into the query string, encode the bytes as a hex literal, eg:
(this is non-ANSI-standard SQL Server syntax)
感谢博比斯的提示。
但我无法参数化我的查询执行。
最后,我的一位资深同事提供了帮助。 :)
这是另一种解决方案,用于将 Unicode 编码字符串转换为由多字节字符 (MBCS) 组成的字符串,以便在 T-SQL 中与旧数据库中的 varchar 列进行比较。
我们可以利用 SqlString 类的 GetNonUnicodeBytes() 方法。
下面是一个代码片段。
这帮助我将所需的 varchar 数据库列与用户请求的 UNICODE 字符串进行比较。
希望这个回复可以帮助其他人。
问候,
普拉塞奥
Thanks bobince for the hint.
I could not parameterize my query execution though.
Finally, one of my senior colleagues helped. :)
Here is another solution to convert a Unicode encoded string to one consisting of Multibyte characters(MBCS) for comparison in T-SQL against varchar columns in legacy database.
We can make use of the method GetNonUnicodeBytes() of the class SqlString.
Here is a code snippet below.
This helped me compare the required varchar database column with user requested string in UNICODE.
Hope this reply helps others.
Regards,
Praseo
我不确定你是否想要这个:
I'm not sure whether you want this: