1

我使用了两个文本区域和一个按钮。这个想法是当按下按钮时,textarea1 上的所有信息将被发送到 php 函数反转它们,然后在 textarea2 上返回结果(我也在使用 ajax,所以我不必重新加载网站)。

现在的问题是,虽然这可以正常工作,但特殊符号存在问题,因为它们在 textarea2 中返回时显示为 �(虽然不是全部),所以我假设某处的编码存在问题。

这是将结果返回给 textarea2 的简单 php 代码

<?php
$data = rawurldecode($_GET["data"]);

//mb_internal_encoding("UTF-8");
//mb_http_output( "UTF-8" );
// ob_start("mb_output_handler");

echo strrev($data);
?>

如您所见,我已经尝试将内部编码设置为 UTF-8,我也尝试在数据发送到 php 并在 php 函数中对其进行解码之前对其进行编码,但效果相同。

4

1 回答 1

2

strrev()将反转字节序列,这对于 UTF-8 等可变字节长度编码来说不是好消息。在 UTF-8 中可以用一个字节表示的字符(例如 ASCII)是安全的,但不能被破坏的字符。

您可以使用启用了 Unicode 标志的正则表达式来绕过strrev().

// `u` flag so `.` match Unicode characters and `s` flag so `.` matches `\n`.
preg_match_all('/./us', $str, $matches);
// Reverse the array of matches, and then join the characters back together.
$str = implode(array_reverse($matches[0]));
于 2012-04-17T12:18:59.447 回答