将php数据发送到textarea - 编码问题

时间:2012-04-17 12:17:08

标签: php ajax encoding

我使用了两个textareas和一个按钮。想法是当按下按钮时,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函数中解码之前对数据进行编码,但它具有相同的效果。

1 个答案:

答案 0 :(得分: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]));