Visual Studio/C#中SQL Server路径\符号转义错误的解决问询
解决C#中SQL Server实例名反斜杠的UTF-16错误问题
嘿,别慌,这个问题我帮不少开发者踩过坑,本质就是C#字符串里特殊字符的转义规则在搞鬼!你遇到的报错是因为在C#中,单个反斜杠\是转义字符——它不是用来表示自身的,而是用来触发像\n(换行)、\t(制表符)这类UTF-16特殊序列的,所以编译器会把它当成不完整的转义序列报错。
给你三个简单好用的解决办法,挑你顺手的来:
用双反斜杠代替单个反斜杠:这是最基础的处理方式。C#里会把两个连续的
\\解析成一个普通的\字符。比如你原本写的"MY_SERVER\MY_INSTANCE",改成"MY_SERVER\\MY_INSTANCE"就能正常识别了。用逐字字符串(Verbatim String):在字符串前面加个
@符号,这样整个字符串里的所有字符都会被当作字面量处理,反斜杠不需要任何转义。比如@"MY_SERVER\MY_INSTANCE",写法直观还不容易出错,特别适合数据库实例名、文件路径这类场景。用连接字符串构建器自动处理:如果是在写SQL Server连接字符串,强烈推荐用
SqlConnectionStringBuilder类来构建,它会自动帮你处理所有特殊字符,完全不用手动转义。示例代码如下:
var connBuilder = new SqlConnectionStringBuilder(); connBuilder.DataSource = @"MY_SERVER\MY_INSTANCE"; // 或者用"MY_SERVER\\MY_INSTANCE" connBuilder.InitialCatalog = "MyDatabase"; connBuilder.UserID = "MyUsername"; connBuilder.Password = "MyPassword"; string finalConnString = connBuilder.ConnectionString;
最后还要提个小细节:有时候复制粘贴的反斜杠可能是全角的\(和半角\看起来很像,但编码不一样),这种也会触发UTF-16相关错误。可以检查一下你输入的是不是半角的反斜杠哦。
内容的提问来源于stack exchange,提问作者Randall Josue Mora Villalobos
相关产品推荐
相关产品推荐

