【问题标题】:Two characters with the same ASCII Code?两个字符具有相同的 ASCII 码?
【发布时间】:2010-12-03 11:43:21
【问题描述】:

我正在尝试清理最近导入的 sql server 2008 数据库,该数据库对我的应用程序有很多无效字符。我发现不同的字符具有相同的 ASCII 码,¿这是可能的吗?。

如果我执行这个查询:

select ASCII('║'), ASCII('¦')

我明白了:

166 166

我需要做类似的工作,但使用 .net 代码。

如果我在 .net 中要求这些字符:

? ((int)'║').ToString() + ", " + ((int)'¦').ToString()
I get:
"9553, 166"

任何人都可以解释发生了什么

【问题讨论】:

  • 这些字符都不是 ASCII - ASCII 最多只能达到 127(它是一个 7 位代码)。

标签: sql unicode character-encoding ascii


【解决方案1】:

使用UNICODE 函数代替ASCII

| 都不是 ASCII 字符,因此使用它们调用 ASCII 会错误地转换并导致 错误 值。

另外,调用UNICODE函数时需要使用unicode字符串,使用N前缀:

SELECT UNICODE(N'║'), UNICODE(N'|')
-- Results in: 9553, 166

【讨论】:

  • 好的,但是,我怎样才能用 sql 获得与 (int)' 类似的结果...?
  • @Ariel Larraburu - select UNICODE('║'), UNICODE('¦') 将返回正确的值。
  • 不,返回 166、166。试试看。
  • @Ariel Larraburu - 我的错。字符串必须以 unicode 开头... select UNICODE(N'║'), UNICODE(N'¦') 返回 9553, 166
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2014-04-22
  • 1970-01-01
相关资源
最近更新 更多