php - mb_split 解析函数无法处理日语字符 UTF-8 文本?

标签 php unicode utf-8 string-parsing

我正在尝试解析通过 multipart/form-data 表单上传的 utf-8 编码文本文件。我构建了一个小的 .txt 文件,在其中输入了一些用拉丁语和日语字符分隔的(无意义)文本(我从 Jpz 零售网站复制/粘贴了 Jpz 字符)。

此时我所尝试的就是用 (LINE) 替换新行,用 (TAB) 替换制表符。这是我的代码:

...
$text=file_get_contents($_FILES['upload']['tmp_name']);

$LineArray=array('\r\n','\n\r','\r','\n');
foreach ($LineArray as $value){
  $pieces=(mb_split($value,$text));
  $text=implode ("(LINE)",$pieces);
}
echo "Here is the modified text:<br/>";
echo $text;
echo "<br/>";
var_dump($text);

$tab='\t';
$pieces=(mb_split($tab,$text));
$text=implode ("(TAB)",$pieces);
echo "Here is the modified text:<br/>";
echo $text;
echo "<br/>";
var_dump($text);
...

这是修改前文本的 vardump:

string 'John    Fitzgerald  Kennedy

Winston     Churchill

John    Edgar   Hoover

素材の 生地を柿渋で染 めた和柄パンツです





火车票 火车票 火车票 火车票



' (length=175)

第一行亚洲字符有 2 个制表符,文件的最后一行有 3 个制表符。

这是所有修改后文本的 vardump:

string 'John(TAB)Fitzgerald(TAB)Kennedy(LINE)Winston(TAB)(TAB)Churchill(LINE)John(TAB)Edgar(TAB)Hoover(LINE)素材の 生地を柿渋で染(TAB)めた和柄パンツです(LINE)(LINE)(LINE)火车票  火车票 火车票 火车票(LINE)(LINE)' (length=235)

为什么我的代码只能识别日语文本部分中的一个选项卡?

最佳答案

mb_split 使用 mb_regex_encoding 的值确定用什么编码来处理字符串。该值可能未设置为 UTF-8,因此 mb_split 不期望/使用正确的编码。尝试将 mb_regex_encoding 设置为 UTF-8。

关于php - mb_split 解析函数无法处理日语字符 UTF-8 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9404682/

相关文章:

php - unicode中字符串的长度不同

unicode - 🇩🇪 字符在 Swift 字符串中是如何表示的?

python - 在 Python ftplib 中列出名称中包含 UTF-8 字符的文件

java - 仅可执行 jar 的字母 ف 是错误的

php - 我的 PHP SQL 查询抛出错误,即使它在 SQL 控制台中工作

php mysql while - 当条件相同时循环

php - 如何将 Unicode 转义序列(如 "\u00ed")解码为正确的 UTF-8 编码字符?

php - 需要帮助寻找 gedit 的 HTML、CSS、PHP 代码格式化程序

php - Swift/PHP 如何使用 Alamofire 在 UITableView 中显示 mysql 数据(json)

c++ - 将字符转换为 UTF-8 背后的逻辑