我在MySQL数据库(utf8_general_ci)中有一个包含卷曲(智能?)撇号的字段: Owner’s...
如果我访问从数据库中提取它的PHP页面,这打印很好,没有特殊处理.但是,我试图通过另一个页面上的$ .getJSON请求来访问它,所以我使用了PHP的json_encode.它截断值以便它读取Owner,然后成功编码其余数据.如果我在json_encode之前在字段上使用PHP的utf8_encode,它包含’编码的完整值\u0092,然后在页面上不打印任何东西,给我Owners.PHP htmlentities并htmlspecialchars没有效果.
查看Chrome工具中的请求,Owner’s显示Owner?s在$ .getJSON页面上.
有人可以帮我从这里出去吗?我已经阅读了关于SO和网络的其他问题,但我找不到任何有用的东西,而且我没有使用JSON.
谢谢阅读.
我试图在这个例子e之后插入一个重音到mysql数据库.使用这个:
mysql_query("SET NAMES 'utf8'");
Run Code Online (Sandbox Code Playgroud)
抛出:
警告:mysql_query()[function.mysql-query]:拒绝访问用户'ODBC'@'localhost'
它没有连接到数据库:
DEFINE ('DB_USER', 'user');
DEFINE ('DB_PASSWORD', 'pword');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'test1');
$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
Run Code Online (Sandbox Code Playgroud) 我有点卡在这里。我有这段代码,可以取消文本内部的html元素并将其编码为utf8。
import HTMLParser
def clean_text(text):
htmlparser = HTMLParser.HTMLParser()
return htmlparser.unescape(
' '.join(text.replace('\n', '').split())
).replace(';', ',').encode('utf-8').strip()
Run Code Online (Sandbox Code Playgroud)
而且我正在使用mysql(上帝救了我!)
并且此代码在两个项目中运行。在第一个项目中,代码运行良好,没有问题。在另一个项目中,字符串将像这样保存:
Die Verbindungen zwischen Dinosauriern und Vögeln immer stärker
Run Code Online (Sandbox Code Playgroud)
它应该是
Die Verbindungen zwischen Dinosauriern und Vögeln immer stärker
Run Code Online (Sandbox Code Playgroud)
我在两个项目django 1.7和python 2.7.9中都使用
我想念什么?mysql搭配是utf8_general_ci,chatset是utf8。两个mysql数据库的设置都相同。
解决这个问题将是一个奇迹...如果有人可以帮助我调试这个东西,我会热情的拥抱和亲吻
概括
我正在尝试使用准备好的语句来停止 SQL 注入,但我无法找到保证它正常工作所需的支持。
设想
我在 Linux 上托管一个站点,该站点连接到带有 FreeTDS 0.91 版的 Microsoft SQL Server,特别是使用 FreeTDS 的dblib. 我已将tds数据库连接的版本设置为 7.4,并且正在使用 PHP 的PDO对象。
根据FreeTDS 文档,4.2 不支持准备好的语句:
TDS 4.2 有限制
- 当然,只有ASCII。
- 不支持 RPC。
- 不支持 BCP。
- varchar 字段限制为 255 个字符。如果您的表定义了更长的字段,它们将被截断。
- 不支持动态查询(也称为准备语句)。
然而,没有任何迹象表明 7.4 不支持准备好的语句,这给了我合理的信心,它们至少不会引发驱动程序错误。
PHP 的 PDO 支持通过PDO::setAttribute(). 我有兴趣PDO::ATTR_ERRMODE将所有错误设置为异常,并PDO::ATTR_EMULATE_PREPARES在兼容时强制数据库执行准备好的语句。
问题
测试连接时,我收到以下错误:
数据库错误:SQLSTATE[IM001]:驱动程序不支持此功能:驱动程序不支持设置属性
无法设置PDO::ATTR_EMULATE_PREPARES,我无法保证数据库实际上按预期执行准备好的语句。
无论如何要修改我的方法,或者是否有替代方法来保证准备好的语句在来自 Linux 的 MS SQL Server 上安全地执行?
我有一个从 CSV 文件读取的 PHP 脚本,该文件采用 UTF-8 格式,下面的代码将其视为 ASCII。如何更改代码以将文件读取为 UTF-8?
if (($handle = fopen("books.csv", "r")) === FALSE)
throw new Exception("Couldn't open books.csv");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
Run Code Online (Sandbox Code Playgroud)
[编辑] 我当前代码的一个问题是,第一行的第一个值始终包含三个字节,用于标识开头附加的 UTF-8 文件。所以我猜一个按值或按行操作的解决方案可能不够好?
将信息保存到数据库字段时,设置如下:
character set: latin1
collation: latin1_swedish_ci
Run Code Online (Sandbox Code Playgroud)
一旦用户更新了这些信息,我注意到很多信息被保存为"????????????????????????????????????????????? ????" (问号)到数据库.保存英语(语言)信息时没有问号.所有其他语言都保存了问号.
现在我已将字符集更改为utf8并正确保存所有语言.
问题是我需要恢复保存为问号的信息.例如:"??????????????????????????????
XAMPP版本:5.6.19
Navicat版本11.0.17
数据库服务器
服务器版本:10.1.10-MariaDB - mariadb.org二进制分发
Web服务器
Apache/2.4.17(Win32)OpenSSL/1.0.2d PHP/5.6.19 PHP版本:5.6.19
phpMyAdmin
版本信息:4.5.1
请帮我获取原始数据.
可能重复:
UTF-8一直通过
搜索高和低的解决方案.在发布问题之前,我尝试了很多变化.
在phpMyAdmin和html页面中,名称显示相同所需的内容是什么?这甚至可以实现吗?
编辑1:这似乎是一个mysql问题.为什么?因为php生成的html页面总会显示正确的字符.此时,只有数据库显示不正确.
编辑2:澄清.使用下面的代码片段和图片中显示的原始设置,
添加 mysqli_query ( $link, 'SET NAMES utf8' )
结束编辑2
在mysql数据库中,使用phpMyAdmin查看:

这些项目出现在数据库中,如下所示:(我修改了第一个João,使其在数据库中显示正确)
在带有编码设置的html页面中,名称显示为(顺序颠倒和修改后有黑色菱形),

编码方式: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
我已经尝试将列排序规则更改为utf8_bin,utf8_general_ci,utf8_unicode_ci,所有这些都没有任何变化.还将文档(BBEdit)从UTF-8更改为UTF-8(带BOM),ISO拉丁文1和Windows拉丁文1.其中一些创建了更多的黑色钻石,使问题更加严重.(在图像中设置为UTF-8)我甚至试图使用编码的等价物preg_replaceã,éetc.
简短的故事是,João在页面上输入(上面的内容类型),João在数据库中,João在刷新时进入html页面.
寻找想法.谢谢.
我无法理解什么问题。我用php和utf-8问题将数据写入mysql
以 HTML 形式编写 Bin?q?dir。Çiç?kq?s
写入数据库Bin?q?dir。×
当我mysqli_set_charset($conn,"utf8");在插入和更新查询中使用时
写入数据库Bin?q?dir。Çiç?kq?s
手动将数据直接写入数据库并mysqli_set_charset($conn,"utf8");在选择中使用 正常工作。
我该如何解决?使用 UTF-8插入和更新。这是我的插入代码
public function insert($sql) {
$conn = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
mysqli_set_charset($conn,"utf8");
// $conn->set_charset("utf8"); use same this.
if ($conn->query($sql) === TRUE) {
return 1;
} else {
return 0;
}
$conn->close();
}
Run Code Online (Sandbox Code Playgroud)
注意:此问题在 Linux 和 OSX 上。在 windows 工作货物。我该如何修复它以用于 linux 托管?
我正在尝试将以下字符串转换为: \xe2\x80\x9c\xc3\x83\xc2\xa9\xe2\x80\x9d 到: \xe2\x80\x9c\xc3\xa9\xe2\x80\x9d 。这是一个 latin1 字符,但我无法正确执行。到目前为止,我已经尝试了两个函数,但它们都没有给我正确的输出。
\n\n$translation = 'Cop\xc3\x83 \xc2\xa9 rnico was Italian';\n$translation = mb_convert_encoding($translation, 'utf-8', 'iso-8859-1'); //opt 1\n$translation = iconv('utf-8', 'latin1', $translation); //opt 2\nRun Code Online (Sandbox Code Playgroud)\n\n我从 Api 获取这些数据,所以我不知道数据库中发生了什么。\n这是西班牙语字符串:Cop\xc3\xa9rnico es italiano。\n这是来自 API 的数据:Cop\xc3\x83 \xc2\xa9 rnico 是意大利语\n这是 $translation = bin2hex($translation);\n436f70c38320c2a920726e69636f206973204974616c69616e 的结果
\n\n正确的做法是什么?问候。
\n我试图在 MySQL Workbench (mysql Ver 8.0.30 for Win64 on x86_64 (MySQL Community Server - GPL)) 中使用命令提示符导入 csv 数据文件。
\n使用以下步骤:
\nmysql>\n加载数据本地文件'F:/Data Analysis/Data-Analysis-Project/Global_SuperShop_Project/Global_Store.csv'
\n-> into table global_store\n-> fields terminated by ','\n-> enclosed by '"'\n-> lines terminated by '\\n'\n-> ignore 1 rows;\nRun Code Online (Sandbox Code Playgroud)\n错误 1300 (HY000):无效的 utf8mb4 字符串:'Paysand'
\nPS:如果我手动将“Paysand\xc3\xba”的值替换为“Paysandu”,我可以消除此错误,但随后它会在该表列中显示其他类似的错误。
\n我怎样才能将utf8mb4转换为utf-8以便mysql工作台可以导入数据或者有什么方法可以在Ms-Excel中转换它?
\n