你好我在这里讨论一件事.我正在构建一个Web服务,其目标是将表情符号数据插入数据库字段.我正在使用Node JS + Mysql.我将charset设置为UTF-8或utf8mb4,但这不能解决我的问题.一些表情符号正在插入完美的{:)}.但有些被转换成方形或被移除.请帮我,我做错了什么?
有关最新信息和当前状态,请参阅此帖子的底部
按照这样的帖子提供建议: 在准备好的声明中使用通配符 - MySQLi
我已经设置了我的语句,它没有错误.但它没有返回正确的数据.
我的select语句对WHERE有这个:
WHERE `Name` LIKE ? order by `Name`
Run Code Online (Sandbox Code Playgroud)
我的字符串设置绑定,然后是实际绑定.
$whatToBind = '%'. $whatName .'%';
$stmt = $mysqli->prepare($selectStr);
$stmt->bind_param('s', $whatToBind);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
当我得到回报时,它将完全错过它应该匹配的记录.就像,如果我发送"Ken L",我会收回"Ken Linton"的记录,而不是"Ken Lawton".如果我投入"劳顿",我根本得不到任何回报.
这是全面的典型行为.如果我搜索电话号码字段,则返回"658",但"609-658"不返回.
如果有人能够让我了解我所缺少的东西,那就太好了.
返回的示例显示了我所指的确切示例:
要回答的问题: 还有一些要检查的事项:
检查MySQL/PHP交互字符集是否设置正确,通常使用:$ mysqli-> set_charset("utf8mb4"); 在建立数据库连接之后.
它被设置为utf8.虽然在设置之前它的行为相同.
你能显示$ mysqli-> error的任何输出吗?
没有错误.只是不完整的回报
你能告诉我们你的整个SQL查询吗?
它包含在屏幕抓取中.虽然,这只是一个简单的字符串.并且它没有考虑准备好的声明的样子.
你能展示Names专栏的Collation/MySQL结构吗?
根据GoDaddy的phpMyAdmin,它都是utf8
你能在绑定之前展示$ whatName的价值吗?
它位于屏幕抓取的顶部.在其他任何事情发生之前,它回应显示它.
在这一点上,我认为问题在于当我搜索的字段有空格或其他不是字母的字符时会发生什么.不是我准确传递的东西.但更像是,一旦准备好陈述,准备的东西就不匹配它所搜索的领域.当您在空间存在之前搜索字段时,不会发生这种情况.这就是为什么"肯"在100%的时间里工作,但"劳顿"完全失败.它是在空间之后.
我尝试了各种方式转换编码类型.我已经尝试了连接字符串的各种方法.我得到的结果要么不是更好,要么彻底打破它.
如果有人有更多的想法,还有21个小时的奖励.在这一点上,我会更乐意为每个提供最佳信息的两个人提供25个奖励.奖励一个而不是另一个似乎是不公平的.
我有一个很大的php对象,我想序列化并存储在MySql数据库中.表编码是,UTF-8并且用于保存序列化对象编码的列也是UTF-8.
问题是该对象包含一个包含法语字符的文本字符串.
例如:
Merci d'avoir passé commande avec Lovre. Voici le récapitulatif de votre commande
Run Code Online (Sandbox Code Playgroud)
当我序列化对象然后再次反序列化它时,字符串被维护并且格式正确.
但是,当我将序列化对象存储到MySql数据库然后再次检索它然后反序列化它时,字符串变为如下所示:
Merci d'avoir passé commande avec Lovre. Voici le récapitulatif de votre commande
Run Code Online (Sandbox Code Playgroud)
将对象存储在数据库中时出现问题.
笔记:
text.我有一个问题,在PHP中制作大写字母.
我试过这个功能:
function strtouper_srbija($string) {
$low=array("?" => "?", "ž" => "Ž", "Š" => "š","?" => "?","?" => "?");
return strtoupper(strtr($string,$low));
}
Run Code Online (Sandbox Code Playgroud)
并尝试使用来自html页面的一些POST数据,文本提交,但没有成功,所以如果你有解决方案,将是好的..
此外,我找到了CSS的解决方案text-transform: uppercase;,但是可以使用PHP示例.
我们在数据库中存储了一些分数信息,例如¾½
没有进行搜索和替换,是否有任何内置的PHP函数会自动将这些函数转换为正确的html实体?
为了让网站接受用户提交的内容(可能不是英文版)(例如日文版)并将其保存到数据库中,最好是对所有新内容进行utf8_encode,并在以后检索时使用utf8_decode?
进一步的信息:我正在使用doctrine,我在尝试保存或选择Unicode字符到MySQL数据库时遇到错误:
SQLSTATE [HY000]:常规错误:1267操作'='非法混合排序(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)
我的网站上有德语字符问题,
在html/php网站的一部分我有这个代码来设置utf-8:
<meta charset="utf-8">
Run Code Online (Sandbox Code Playgroud)
在mysql中,我有这个代码来设置utf-8
SET CHARSET 'utf8';
Run Code Online (Sandbox Code Playgroud)
这里有一些关于德语的词: Gemäß
以下是mysql表中该单词的外观:
Gemäß
以下是该网站上显示的字词: Gemäß
有什么问题?谢谢.
我有一个PHPExcel库1.7.9创建xlsx的问题.
我使用fromArray方法将MySQL表填充到xlsx中,当我尝试用重音填充任何单元格时,单元格被填充为"FALSE".

这是我的代码:
$query="SELECT
Caso,
Etq_Amarilla,
Tipo,
Etiqueta,
'EC Sociedad',
ProveedorEscalado,
Proveedor_de_Mantenimiento,
organizativo,
OficinaPeople,
centro,
sociedad,
Tipo_Disp,
Fecha_y_hora_de_creacion,
Fecha_y_hora_de_cierre,
domicilio,
jcentro04,
analitico,
DTDT
from CdM_Diario where Dia='5'";
$datos=$mysqli->query($query);
$objPHPExcel->setActiveSheetIndex(4);
$objPHPExcel->getActiveSheet()->fromArray($cabecera,NULL,"A1");
$cont=2;
while($fila=$datos->fetch_assoc())
{
$objPHPExcel->getActiveSheet()->fromArray($fila,"pepe","A".$cont."");
$cont++;
}
$cont=2;
Run Code Online (Sandbox Code Playgroud)
解决:
$ mysqli-> set_charset( 'UTF8');
感谢Mark Baker
首先我的代码是一个虚拟代码,它只是为了理解目的而在sql中编写.所以请好好忍受它,因为我稍后会把它改成mysqli ..
我有一些阿拉伯文本需要存储在数据库中,然后在用户端显示.
要将其存储在数据库中,我将排序规则更改为utf8_general_ci,并在连接文件中使用以下代码,即config.php
<?php
$link = mysql_connect('abc','abc','abc') or die('Cannot connect to the DB');
mysql_select_db('abc',$link) or die('Cannot select the DB');
mysql_set_charset("UTF8", $link);
mysql_query("set character_set 'utf8'");
?>
Run Code Online (Sandbox Code Playgroud)
在它的帮助下,我能够以阿拉伯语形式存储数据,但现在在我的php文件中,应该显示数据我得到字母数字数据(类似这样:u062du0631u0641u0629n).我的php文件的示例代码是
<?php
require_once('config.php');
$vendorid = $_REQUEST['vendorid'];
$select = mysql_query("select * from vendor where id = '".$vendorid."'");
$posts = array();
if(mysql_num_rows($select)) {
while($post = mysql_fetch_assoc($select)) {
$posts[] = $post;
}
header('Content-type: application/json');
echo stripslashes(json_encode(array('vendor list'=>$posts)));
} else {
header('Content-type: application/json');
echo stripslashes(json_encode(array('vendor list'=>'No vendor available')));
}
?>
Run Code Online (Sandbox Code Playgroud) 我在用:
\n\n random_bytes(30);\nRun Code Online (Sandbox Code Playgroud)\n\n为我的程序生成一个随机字符串。然后将该字符串存储在 mysql 数据库中。但是,当我运行该函数时,我得到一个输出,例如
\n\nT\xef\xbf\xbd\xd4\xb8\xef\xbf\xbd@(\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdm\nRun Code Online (Sandbox Code Playgroud)\n\n其中包括不可读的字符。当我尝试将其存储在数据库中时,\xef\xbf\xbd 字符未存储,因此这意味着该字符串未正确保存。
\n\n我怎样才能让它返回一个只包含可读字符的字符串,并且不会在我的 mysql 数据库中丢失?
\n\n谢谢!
\n