postgres npgsql with c# - 尝试将特殊字符写入 ascii 编码的数据库
我正在使用开源库 npgsql http://pgfoundry.org/projects/npgsql/ 来操作postgres 数据库上的第三方数据。数据库采用 SQL_ASCII 编码。
这样的标准 C# 字符串运行查询,则
如果我使用像INSERT INTO CITIES(cityname) value("Köln")
数据库中显示的值看起来更像是:пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
例如炒。我花了很多时间尝试使用不同的字符串编码等但没有成功
I am using the open source library npgsql http://pgfoundry.org/projects/npgsql/ to manipulate third party data on a postgres database. The database is encoded SQL_ASCII.
If I run a query using a standard c# string like
INSERT INTO CITIES(cityname) values("Köln")
the value that shows up in the database looks more like: пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
e.g. scrambled. I've spent many hours trying to use different string encodings etc with no success
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SQL_ASCII 表示您关闭数据库中的编码功能。因此,您需要确保所有客户端都使用相同的编码。我相信 npgsql 将始终使用 UTF8,并且这是无法更改的。
因此,不存在“数据库中显示的值” - 它将取决于与数据库通信的客户端所使用的编码。
解决此问题的最佳方法是在数据库中设置实际编码,然后设置将其转换为有用的内容 - 例如 UTF8 或 LATIN1。
SQL_ASCII means you turn off the encoding functionality in the database. Thus it's up to you to make sure all your clients use the same encoding. I believe npgsql will always use UTF8, and that this cannot be changed.
So there is no "the value that shows up in the database" - it will be depending on what encoding the client that talks to the database is in.
The best way to fix it is to set an actual encoding in the database, and set it to something useful - such as UTF8 or LATIN1.