Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CakePHP和MySQL中使用UTF和印地语_Mysql_Cakephp_Utf 8_Hindi - Fatal编程技术网

在CakePHP和MySQL中使用UTF和印地语

在CakePHP和MySQL中使用UTF和印地语,mysql,cakephp,utf-8,hindi,Mysql,Cakephp,Utf 8,Hindi,我已经创建了一个包含印地语(UTF-8)数据的表单,我想将其存储在MySQL表中。与UTF数据对应的列的排序规则值设置为UTF\u general\u ci 我已成功地将数据存储在表中,但在执行select where查询时,它不会返回数据。我的问题是: 选择Birthsno,Birthbookingnumber,Birth出生日期,Birth婴儿性别,出生婴儿名,出生婴儿父亲名,出生婴儿父亲地址,出生婴儿母亲姓名,出生出生地,出生地类型,出生申请人姓名,出生申请人地址,出生登记号,出生日期,出

我已经创建了一个包含印地语(UTF-8)数据的表单,我想将其存储在MySQL表中。与UTF数据对应的列的排序规则值设置为
UTF\u general\u ci

我已成功地将数据存储在表中,但在执行select where查询时,它不会返回数据。我的问题是:

选择
Birth
sno
Birth
bookingnumber
Birth
出生日期,
Birth
婴儿性别,
出生
婴儿名,
出生
婴儿父亲名
出生
婴儿父亲地址,
出生
婴儿母亲姓名,
出生
出生地,
出生地类型
出生
申请人姓名,
出生
申请人地址,
出生
登记号,
出生日期
出生
登记病房,
出生
登记城市村,
出生
登记区,
出生
备注,
出生
母亲出生地姓名,
出生
母亲出生地类型,
出生
出生出生出生出生出生出生个人宗教,
出生
父亲教育,
出生
母亲教育,
出生
父亲职业,
出生
母亲职业,
出生
母亲结婚时的年龄
出生
母亲出生时的年龄
出生
母亲子女的计数,
出生
出生
出生方法,
出生
母亲出生时的体重
出生
怀孕持续时间
出生
出生日期来自
np
出生AS
出生
其中
出生
婴儿名出生婴儿父亲名婴儿父亲名出生婴儿母亲名婴儿母亲名和
出生
婴儿地址和父亲名
出生
个人宗教
='हिंदू' 和
出生
婴儿性别
='पुरुष'

数据库的名称为np,表的名称为np 上述查询已打印在日志文件中。我试图在HeidiSQL(MySQL前端)中复制并粘贴相同的查询,但它没有运行。但是,如果我删除以下部分:*和
出生
个人宗教
='हिंदू' 和
出生
婴儿性别
='पुरुष'**, 查询工作正常


如何解决此问题?

这看起来像是MySQL客户端和MySQL服务器不“交谈”相同编码的情况

有3个地方需要注意编码

Web表单(用户看到的)->您的Web应用程序(CakePHP)->您的数据库服务器(MySQL)

这三种方法中的一种与其他方法使用的编码不同。因此,到那时:

“'हिंदू'" 及पुरुष'“访问您的数据库,它们将是数据库中找不到的完全不同的内容

因此,请确保在default.ctp文件中设置了编码:

echo$this->Html->charset();
//这将导致页面的UTF-8编码

看看你网页的源代码(我猜你有一个搜索/过滤表单)

在顶部,您应该看到:

然后查找为搜索/筛选表单生成的代码。您应该看到:

重要的是“utf-8”必须出现在这些地方

接下来,查看
database.php
文件并确保这一行:

'encoding'=>'utf8',
未注释掉

最后,对于一个您确信支持UTF-8(可能是HeidiSQL)的客户端,请查看您的数据表
np.nurtions
,并确保您所拥有的数据实际上是有意义的!它可能因为之前的编码差异而被损坏

一旦数据库中的数据有意义,您就可以开始了

如果这不能解决问题,你必须阅读并彻底理解。只有这样,你才能找到问题所在并同步编码。
(显然,您的PHP源文件也应该是UTF-8编码的…

哇,感谢llie提供了这样一个解释性的答案,我一定会详细解释一下。