无法在 "Portuguese" 数据库上使用 npgsql select 某些行
Cannot select some rows with npgsql on a "Portuguese" database
我有一个使用 "SQL_ASCII" 和模板 "template0" 创建的 postgresql 数据库。它以葡萄牙语保存数据,所以我有 "Não"、"Feijão"、"Avô" 等数据。当我尝试检索具有此类字符“~^”的行时,它不起作用,否则它会起作用。
错误:
- "Error parsing column 6 (sempresa=0 - String)"}
- 留言="Can not convert byte [C3] in index 0 of the code page specified for Unicode."
我正在使用 Npgsql 和 Dapper
<packages>
<package id="Dapper" version="1.50.2" targetFramework="net45" />
<package id="Npgsql" version="3.1.7" targetFramework="net45" />
</packages>
我搜索了很多,但没有任何效果。我试过:
正在连接字符串中设置客户端编码:
var sqlBuilder = new NpgsqlConnectionStringBuilder
{
Host = host,
Database = database,
Username = user,
Password = password,
Pooling = false,
ClientEncoding = "SQL_ASCII"
// I also tried "UNICODE", "utf8", "win-1252"
};
我也试过运行一个非查询命令在选择
之前改变编码
// I tried a lot of encondings: SQL_ASCII, win-1252, unicode
connection.Execute("set client_encoding = 'SQL_ASCII'");
var data = connection.Query<T>(strSQL);
我无法更改数据库编码或重新创建数据库,因为该应用程序将 运行 针对大量生产数据库。
我希望没有人将这个问题标记为重复问题,因为我真的尝试用其他问题来解决,但我发现没有任何效果。
我已经为 Npgsql 添加了对非 UTF8 编码的支持。这应该只在特殊的边缘情况下使用,例如这种情况,其中数据库是用 SQL_ASCII 创建的,包含非 ASCII 字符,并且不可能更改编码。
我已将此支持反向移植到下一个补丁版本 3.1.8(看起来无害)。目前构建服务器出现了一些问题,但如果您等待几天,您应该可以在 http://myget.org/gallery/npgsql. Follow https://github.com/npgsql/npgsql/issues/392 获得 CI 3.1.8 的新支持包以获得更多 updates/progress .
我有一个使用 "SQL_ASCII" 和模板 "template0" 创建的 postgresql 数据库。它以葡萄牙语保存数据,所以我有 "Não"、"Feijão"、"Avô" 等数据。当我尝试检索具有此类字符“~^”的行时,它不起作用,否则它会起作用。
错误:
- "Error parsing column 6 (sempresa=0 - String)"}
- 留言="Can not convert byte [C3] in index 0 of the code page specified for Unicode."
我正在使用 Npgsql 和 Dapper
<packages>
<package id="Dapper" version="1.50.2" targetFramework="net45" />
<package id="Npgsql" version="3.1.7" targetFramework="net45" />
</packages>
我搜索了很多,但没有任何效果。我试过:
正在连接字符串中设置客户端编码:
var sqlBuilder = new NpgsqlConnectionStringBuilder
{
Host = host,
Database = database,
Username = user,
Password = password,
Pooling = false,
ClientEncoding = "SQL_ASCII"
// I also tried "UNICODE", "utf8", "win-1252"
};
我也试过运行一个非查询命令在选择
之前改变编码 // I tried a lot of encondings: SQL_ASCII, win-1252, unicode
connection.Execute("set client_encoding = 'SQL_ASCII'");
var data = connection.Query<T>(strSQL);
我无法更改数据库编码或重新创建数据库,因为该应用程序将 运行 针对大量生产数据库。
我希望没有人将这个问题标记为重复问题,因为我真的尝试用其他问题来解决,但我发现没有任何效果。
我已经为 Npgsql 添加了对非 UTF8 编码的支持。这应该只在特殊的边缘情况下使用,例如这种情况,其中数据库是用 SQL_ASCII 创建的,包含非 ASCII 字符,并且不可能更改编码。
我已将此支持反向移植到下一个补丁版本 3.1.8(看起来无害)。目前构建服务器出现了一些问题,但如果您等待几天,您应该可以在 http://myget.org/gallery/npgsql. Follow https://github.com/npgsql/npgsql/issues/392 获得 CI 3.1.8 的新支持包以获得更多 updates/progress .