如何在php中将二进制字符串转换为普通字符串
问题描述 我正在尝试将电子邮件内容导入数据库表。有时,在插入消息时会出现SQL错误。我发现当消息内容是二进制字符串而不是字符串时,它会失败。 例如,如果我打印成功导入(截断)的消息,我会在控制台中得到此消息 然而,我通过有问题的导入得到了这一点: 我发现如果我使用函数如何在php中将二进制字符串转换为普通字符串,php,string,laravel,encoding,utf-8,Php,String,Laravel,Encoding,Utf 8,问题描述 我正在尝试将电子邮件内容导入数据库表。有时,在插入消息时会出现SQL错误。我发现当消息内容是二进制字符串而不是字符串时,它会失败。 例如,如果我打印成功导入(截断)的消息,我会在控制台中得到此消息 然而,我通过有问题的导入得到了这一点: 我发现如果我使用函数utf8\u encode,我就能够成功地将它导入到SQL中。问题是它“中断”了以前成功导入的重音字符: 我尝试过的 检测字符串是否为带有ctype\u print的二进制字符串,对于非二进制字符串和二进制字符串都返回fal
utf8\u encode
,我就能够成功地将它导入到SQL中。问题是它“中断”了以前成功导入的重音字符:
我尝试过的
- 检测字符串是否为带有
的二进制字符串,对于非二进制字符串和二进制字符串都返回false。只有当它是二进制的时候,我才能调用ctype\u print
utf8\u encode
- 使用
,不起作用解包
- 使用
,返回mb\u Detect\u编码检测字符串编码
UTF-8
- 使用
,因iconv
iconv()失败:在输入字符串中检测到非法字符
- 使用
/(string)
settype($html,'string')
如何将二进制字符串转换为普通字符串,以便在不中断其他导入中的重音字符的情况下将其导入数据库?数据库中的字符集/排序规则集是什么?你在使用什么数据库?您的实际代码在哪里?这是否回答了您的问题?我无法更改数据库字符集排序规则。排序规则是SQL\u拉丁1\u通用\u CP1\u CI\u AS,我使用的是SQL Server数据库上的字符集/排序规则集是什么?你在使用什么数据库?您的实际代码在哪里?这是否回答了您的问题?我无法更改数据库字符集排序规则。排序规则是SQL拉丁通用CP1 CI AS,我使用的是SQL server