Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
如何在php中将二进制字符串转换为普通字符串_Php_String_Laravel_Encoding_Utf 8 - Fatal编程技术网

如何在php中将二进制字符串转换为普通字符串

如何在php中将二进制字符串转换为普通字符串,php,string,laravel,encoding,utf-8,Php,String,Laravel,Encoding,Utf 8,问题描述 我正在尝试将电子邮件内容导入数据库表。有时,在插入消息时会出现SQL错误。我发现当消息内容是二进制字符串而不是字符串时,它会失败。 例如,如果我打印成功导入(截断)的消息,我会在控制台中得到此消息 然而,我通过有问题的导入得到了这一点: 我发现如果我使用函数utf8\u encode,我就能够成功地将它导入到SQL中。问题是它“中断”了以前成功导入的重音字符: 我尝试过的 检测字符串是否为带有ctype\u print的二进制字符串,对于非二进制字符串和二进制字符串都返回fal

问题描述

我正在尝试将电子邮件内容导入数据库表。有时,在插入消息时会出现SQL错误。我发现当消息内容是二进制字符串而不是字符串时,它会失败。 例如,如果我打印成功导入(截断)的消息,我会在控制台中得到此消息

然而,我通过有问题的导入得到了这一点:

我发现如果我使用函数
utf8\u encode
,我就能够成功地将它导入到SQL中。问题是它“中断”了以前成功导入的重音字符:

我尝试过的

  • 检测字符串是否为带有
    ctype\u print
    的二进制字符串,对于非二进制字符串和二进制字符串都返回false。只有当它是二进制的时候,我才能调用
    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