gpt4 book ai didi

php - 使用 CakePHP 的 UTF-8 MySQL 表中的 Windows 1252 数据

转载 作者:行者123 更新时间:2023-11-29 00:59:42 27 4
gpt4 key购买 nike

我在 SO 上经常看到这个问题的版本,所以我会尽量明确说明这里发生的事情。

我们有一个连接到 MySQL 5.1 数据库的 Cake 1.2.5 应用程序。我尝试写入的原始数据库和表是 Latin-1,但我将数据库、表和列更改为全部为 UTF-8(据我了解,这并不重要,但我将其包括在内为了完整起见)。

问题是 Windows 用户在我们的表单中输入破折号(通过让 MS Word 自动更正连字符获得),最终在数据库中以字节 x96 结尾(通过使用Emacs 中的十六进制模式十六进制编辑器),它是 Windows 1252 编码中破折号的代码点(在其他常见编码中几乎无效)。

最初我认为这是表单输入的问题,所以我做了通常的一轮更改 Content-Type header ,检查元标记,将 accept-charset 添加到表单标记,这些都没有做任何事情,但是然后我尝试将从表单中获取的数据转储到一个文件中,然后再将其保存到数据库中,并且它正确地保存了 en dash xe2x80x93 的 UTF-8 代码点(以相同的方式查看) ,所以我相信问题是在 Cake 与数据库对话时出现的。

我尝试过的事情:

  • 在 app/config/database.php 中的连接定义中添加了 'encoding'=>'utf8'
  • 添加 Configure::write('App.encoding', 'UTF-8'); 到 app/config/core.php。
  • 添加 mb_internal_encoding('UTF-8'); 到 app/config/core.php。

除了可能的答案外,我还想听听我在此过程中所做的任何无效假设,以及在该过程的各个阶段查看数据状态的方法。

最佳答案

如果您只是将表架构从 latin1 更改为 UTF-8,如果您现有的数据包含 UTF-8 字符,这可能无法正常工作。不太确定 cakephp,你是否也检查过 mysql_set_charsethttp://php.net/manual/en/function.mysql-set-charset.php

关于php - 使用 CakePHP 的 UTF-8 MySQL 表中的 Windows 1252 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137117/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com