将正确编码的utf-8字符串传递给php soapCall,并返回它不是有效的utf_8字符。
$ source =“test” - @ - ' - “½℗ↄ⃝''是'单身' echo mb_detect_encoding($ source,“auto”)是UTF-8
hex = E2 80 9C 74 65 73 74 E2 80 9D 2D 40 E2 80 93 20 27 E2 80 94 20 22 20 C2 BD 20 20 E2 84 97 20 20 E2 86 84 E2 83 9D 20 20 69 74 E2 80 B2 73 20 E2 80 98 73 69 6E 67 6C 65 E2 80 99
错误:processSalesOrder由于SOAP-ERROR而中断:编码: string'\ x9c ...'不是有效的utf-8字符串
返回: TEST -@ ' “½ IT S SINGLE
添加'encoding'=> soapClient init选项和soapCall选项的“UTF-8”。
mariadb数据库,表,列是utf8mb4,collation utf8mb4_unicode_ci
php.ini default_charset =“UTF-8”
数据库连接设置为utf8mb4 html页面设置为charset = utf8
在网页上正确显示。 编码检测在发送到soapCall之前显示UTF-8,但被soapCall拒绝。
我错过了什么?
编辑: 我也使用PHP DOMDocument::save() saves as ASCII instead of UTF-8的建议,但没有帮助。
$ xmlDomDoc-> encoding ='UTF-8';
我终于解决了将[iconv]和[mbstring]的php.ini中的设置更改为UTF-8的问题
iconv.input_encoding = UTF-8
iconv.internal_encoding = UTF-8
iconv.output_encoding = UTF-8
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
答案 0 :(得分:0)
尝试使用utf8 / utf8mb4时,如果您看到带有问号的黑钻石, 其中一种情况存在:
案例1(原始字节不 utf8):
SET NAMES
和 INSERT
的连接(或SELECT
)不是utf8 / utf8mb4。解决这个问题。CHARACTER SET utf8
(或utf8mb4)。案例2(原始字节 utf8):
SET NAMES
的连接(或SELECT
)不是utf8 / utf8mb4。解决这个问题。CHARACTER SET utf8
(或utf8mb4)。只有在浏览器设置为<meta charset=UTF-8>