我正在将json_encode($ data)用于数据数组,并且有一个字段包含俄语字符.我使用这个mb_detect_encoding()来显示该字段的编码,并显示UTF-8.我认为json编码失败是由于其中的一些不良字符,如"ра▒".我在数据上尝试了很多东西utf8_encode,它会传递那个错误但是数据看起来不再正确了.
这个问题可以做些什么?
我将我的网站从我的本地测试服务器移动到NameCheap共享主机,现在我遇到了一个问题 - 一些页面没有正确显示utf-8特殊字符(显示问号).所有页面都是utf-8编码,所有数据库表都是如此.奇怪的是,有些页面显示正确,而有些页面则看似随机.
例如,我的索引页面很好,但我的个人资料页面没有.faq.html工作正常,但是当我将它重命名为faq.php时却没有.最奇怪的是,我有一个带有两个JQuery选项卡的页面,其中一个正确显示而另一个没有!
有人可以帮我解决这个问题吗?
我的表字符集是utf8,它的校对是utf8.now我有这个代码:
$mysqli = new mysqli("localhost", "root", "", "Amoozeshgah");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
}
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
printf("Current character set: %s\n", $mysqli->character_set_name());
}
mysql_set_charset('utf8');
if ($stmt = $mysqli->prepare("SELECT About_Title FROM Tbl_About WHERE About_Id=?")) {
$city = 8;
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$result = $stmt->get_result();
/* fetch value */
while ($myrow = $result->fetch_assoc()) {
// …Run Code Online (Sandbox Code Playgroud) 我正在实现Wordpress搜索功能.当我搜索文本" 分区 "(这是其中一个帖子中的文本)时,它返回"未找到结果"
现在进一步调查,我检查了核心文件: wp-includes/query.php => function parse_search()
并发现$ term被接收编码为:Division\xe2\x80\x99s
现在这个术语没有被正确解码.形成的最终SQL语句是:
(((test_posts.post_title LIKE'%Division\xe2\x80\x99s%')OR(test_posts.post_content LIKE'%Division\xe2\x80\x99s%')))
所以,我想解码特殊字符,以便成功搜索带有特殊字符的术语.
解码方法如:
不工作.有没有可以帮助的插件/钩子/方法?
示例提供:
简单searchform.php文件在这里:
if (!defined('ABSPATH')) exit(0);
global $wp_query;
$search_query = get_search_query();
$error = get_query_var('error'); ?>
<form role="search" method="get" class="search-form form-inline" action="<?php echo esc_url(home_url('/')); ?>">
<input id="mod-search-searchword" type="search" size="30" class="inputbox search-query search-field" placeholder="search products, content" value="<?php echo …Run Code Online (Sandbox Code Playgroud) table 'abc' data :
tid title
1 ????????????? ?.
2 ?????? ??????
$sql=mysql_query("select title from abd where tid='1'");
$row=mysql_fetch_array($sql);
$title = $row['title'];
echo $title;
Run Code Online (Sandbox Code Playgroud)
????????????????
Run Code Online (Sandbox Code Playgroud)
????????????? ?.
Run Code Online (Sandbox Code Playgroud)
<?php
mysql_query ("set character_set_results='utf8'");
$sql=mysql_query("select title from abd where tid='1'");
$row=mysql_fetch_array($sql);
$title = $row['title'];
echo $title;
?>
Run Code Online (Sandbox Code Playgroud) 你会推荐什么扩展,如何最好配置php来创建一个使用utf-8编码的网站.例如...
看来php目前还不能很好地处理多字节字符集.到目前为止,我已经知道mbstring看起来像一个重要的扩展.
值得麻烦......?
从这个优秀的" UTF-8一直到 "的问题,我读到了这个:
不幸的是,在尝试存储或在任何地方使用它之前,您应该将每个提交的字符串验证为有效的UTF-8.PHP的mb_check_encoding()可以解决问题,但你必须虔诚地使用它.真的没办法解决这个问题,因为恶意客户端 可以用他们想要的任何编码提交数据,而且我还没有找到让PHP可靠地为你做这件事的技巧.
现在,我还在学习编码的怪癖,我想知道恶意客户端可以做些什么来滥用编码.一个人可以实现什么?有人能举个例子吗?假设我将用户输入保存到MySQL数据库中,或者我通过电子邮件发送,如果我不使用该mb_check_encoding功能,用户怎么会造成伤害呢?
我将数据从MySQL 4(它们最初设置为latin2 encoding)移动到MySQL 5并将编码设置为utf-8.它看起来不错phpMyAdmin,而且utf-8还可以.但是网站上有问号而不是一些字符!网站编码也设置为utf8所以我不明白问题在哪里.
PHP和HTML文件也设置为utf8.
我不知道...
初始化PDO时 - 我应该这样做:charset = UTF8或charset = UTF8MB4?
这是我的初始化:
$dsn = 'mysql:host=example.com;dbname=testdb;port=3306;charset=UTF8';
$dbh = new \Pdo($dsn, 'username', 'pass');
$dbh->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)
但是,如果dsn是这样的:
$dsn = 'mysql:host=example.com;dbname=testdb;port=3306;charset=UTF8MB4';
Run Code Online (Sandbox Code Playgroud)
如果mysql数据库有一个默认的字符集UTF8MB4.
我希望每个表和数据库(要创建)都是与emojis一起使用的utf-8.我知道我需要在里面定义一些变量my.cnf:
init_connect='SET collation_connection = ??? '
init_connect='SET NAMES ???'
character-set-server = ???
collation-server = ???
Run Code Online (Sandbox Code Playgroud)
但是,我不知道该放什么???.我放在里面my.cnf怎么样?