【问题标题】:"Could not find stored procedure 'ÿþ' " error“找不到存储过程'ÿþ'”错误
【发布时间】:2017-10-17 06:02:06
【问题描述】:

我正在尝试执行查询,从 SQL 脚本文件中读取内容,将其分配给变量,然后执行内容。然后我得到这个错误说Could not find stored procedure 'ÿþ'。请帮助我理解这个问题。谢谢。

信息:

SQL Server 2014

SSMS 版本 - 12.0.4100.1

【问题讨论】:

  • 问题在于您的 SQL 脚本文件被编码为 UTF-16,而您的应用程序中读取它的部分将其解码为 Windows-1252。
  • 哦,我明白了。我能做些什么来克服它?

标签: sql-server ssms sql-server-2014 utf-16 windows-1252


【解决方案1】:

ÿþ 是解释UTF-16 byte order mark 的两个字节的一种方式,即\xFF 和\xFE。

当您使用不知道(或者更有可能未配置为使用)Unicode 的工具读取以 UTF-16 编码保存的文件时,您会收到这两个字母。

例如,当您使用 Windows 记事本编辑文本文件并在保存时选择“Unicode”作为文件编码时,记事本将使用 UTF-16 保存文件,并在开始时用上述两个字节进行标记.

如果您用来读取文件的任何东西都不知道该文件是 Unicode,那么它将使用您计算机的默认字节编码来解码该文本文件。

现在,如果默认编码恰好是 Windows-1252,就像你的情况一样,那么 ÿþ 就是你得到的,因为 \xFF 是 ÿ 而 \xFE 是 þ

因此,当出现ÿþ 时,SQL Server 认为它一定是存储过程的名称,因为存储过程是唯一可以通过提及它们的名称来运行的语句。它尽职尽责地报告它找不到该名称的过程。

【讨论】:

  • 感谢您的解释。现在我明白为什么会这样了。有没有办法跳过这些字符?
  • 您绝对不想跳过这些字符。它们很重要。
  • 我已经解释了您需要知道的一切,以便得出正确的结论。把拼图拼起来,并不难。 :)
  • 关键词在两个破折号之间。
  • xD 好的。你真的很有帮助。我会试试你的解决方案... :)
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 2023-03-30
相关资源
最近更新 更多