Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 URL编码字符串在SMS正文中未正确显示_Php_String_Encoding - Fatal编程技术网

PHP URL编码字符串在SMS正文中未正确显示

PHP URL编码字符串在SMS正文中未正确显示,php,string,encoding,Php,String,Encoding,我试图发送一个编码字符串,将其附加到用于发送批量SMS的api url。但并非所有字符都被正确编码。在使用urlencode之前,我曾尝试在字符串上使用utf8\u encode、htmlspecialchars,但也不起作用。因为它是一个外部api调用,所以它们只使用urldecode来显示我无法更改的字符串。那么,需要做些什么来编码以下字符串中的特殊字符,以便在生成的SMS中正确显示它 示例字符串: $message = '2016 brings with it a new year sal

我试图发送一个编码字符串,将其附加到用于发送批量SMS的api url。但并非所有字符都被正确编码。在使用
urlencode
之前,我曾尝试在字符串上使用
utf8\u encode
htmlspecialchars
,但也不起作用。因为它是一个外部api调用,所以它们只使用urldecode来显示我无法更改的字符串。那么,需要做些什么来编码以下字符串中的特殊字符,以便在生成的SMS中正确显示它

示例字符串:

$message = '2016 brings with it a new year sale at “Orchid” & “home n décor”.';
2016年,“兰花”和“家居装饰”将迎来新年大甩卖

应用urlencode和htmlentities后

urlencode(htmlentities($message, ENT_QUOTES, 'UTF-8'))
我得到以下输出-

2016年+带来+与它一起+一个+新年+销售+at+%26ldquo%3BOrchid%26rdquo%3B+%26amp%3B+%26ldquo%3Bhome+n+d%26eacute%3B或%26rdquo%3B

当我尝试使用
urldecode
时,它会给我预期的结果-

2016年,“兰花”和“家居装饰”将迎来新年大甩卖

当我尝试将编码的输出字符串作为url参数发送并回显参数时,我得到了完全相同的结果,甚至没有使用
urldecode

但问题出在我的短信正文中,它总是以以下模式显示-

2016 brings with it a new year sale at “Orchid” & “home n décor”.
为什么它不显示短信中的解码字符串?如何做到这一点?它显示正常的编码字符,就像它编码到
%26
一样&没有任何问题。但会导致双引号或字符出现问题,如
é
。有人能提出解决办法吗?

使用:

$message = "Message Text";
而不是:

$message = urlencode("Message Text");

SMS有不同的编码:。关于您正在使用的API,没有好的文档吗?@MatthiasW。不,没有可用的文档,我只有url和身份验证,不管怎样,感谢url,我现在要看一看。Prueva utilizando el método base64_encode($string),un poco más de Referencea: