MySQL 的代码页相关问题++
代码:
mysqlpp::Query acc_query = 连接->query("SELECT * FROM 帐户;");
以下代码产生:
_Gfirst = 0x00c67718 "从帐户中选择 *;ээээ«««««««юоюою"
与 Visual Studio 调试器中一样。它似乎导致我的查询失败并出现奇怪的结果。
还有其他人遇到过吗?
Code:
mysqlpp::Query acc_query = connection->query("SELECT * FROM accounts;");
The following code produces:
_Gfirst = 0x00c67718 "SELECT * FROM accounts;ээээ««««««««юоюою"
As in Visual Studio debugger. It appears to cause my query to fail with weird results.
Has anyone else encountered it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MySQL 最好使用 UTF-8 编码。代码页是一个以 Windows 为中心的预 Unicode 概念。您使用它们而不是 Unicode 可能可以解释为什么您会遇到问题。虽然可以让 MySQL — 以及 MySQL++ — 使用 Windows 风格的代码页,但在 2010 年您不应该这样做。
如果您使用 Unicode,它可能是 UTF-16 编码(Windows ' NT 衍生品中的本机编码),这又解释了很多。
在将所有字符串数据发送到 MySQL 之前将其转换为 UTF-8 形式,并将 MySQL 配置为在其表中使用 UTF-8 编码。
It's best to use UTF-8 encoding with MySQL. Code pages are a Windows-centric pre-Unicode concept. Your use of them instead of Unicode probably explains why you're having problems. While it's possible to make MySQL — and thus MySQL++ — work with Windows-style code pages, you shouldn't be doing that in 2010.
If you are using Unicode, it's probably UTF-16 encoding (Windows' native encoding in the NT derivatives), which again explains a lot.
Convert all string data into UTF-8 form before sending it to MySQL, and configure MySQL to use UTF-8 encoding in its tables.