PHP:如何正确拆分unicode韩语字符串?

PHP:如何正确拆分unicode韩语字符串?,php,character-encoding,Php,Character Encoding,我有一个问题,我似乎不能写“某些”韩语字符。让我试着解释一下。这些是我采取的步骤 MS Access DB文件(美国版本)中有一个带有韩语的表。我将此表导出为UTF-8编码的文本文件。我们称之为“A.txt” 当A.txt被读取、存储在数组中,然后写入新文件(B.txt)时,所有字符都会正确显示。我使用的是标题(“内容类型:text/plain;charset=UTF-8”)在我的PHP脚本的最开始。我只需使用fwrite($fh,$someStr) 当我在另一个脚本中读取B.txt并写入一个新

我有一个问题,我似乎不能写“某些”韩语字符。让我试着解释一下。这些是我采取的步骤

  • MS Access DB文件(美国版本)中有一个带有韩语的表。我将此表导出为UTF-8编码的文本文件。我们称之为“A.txt”

  • 当A.txt被读取、存储在数组中,然后写入新文件(B.txt)时,所有字符都会正确显示。我使用的是
    标题(“内容类型:text/plain;charset=UTF-8”)在我的PHP脚本的最开始。我只需使用
    fwrite($fh,$someStr)

  • 当我在另一个脚本中读取B.txt并写入一个新文件(C.txt)时,有一个特定的列(显然在PHP代码中,我不是在处理表或矩阵,而是在输出回原始文本文件格式时有效地说)这会导致字符显示如下内容:
    ììì–ë339;Š¸ëì¼
    。这整列都有中断字符,所以如果我在一个文本文件中有5列,用逗号分隔并用双引号封装,那么这列将中断其他所有列的韩文字符。如果我在编写文本文件时省略了这一列,一切都很好


  • 现在,我注意到某些PHP函数/操作会破坏Unicode字符。例如,如果我对任何一个韩语字符串使用preg_replace(),并尝试写入(),它将中断。但是,我没有在其他字段/列上执行任何我尚未执行的操作(以文本文件格式来说),其他部分也没有中断

    有人知道如何纠正这种情况吗?我用不同的方法尝试了
    utf8\u encode()
    mb\u convert\u encodeing()
    ,但没有成功。我正在阅读
    utf8\u encode()。我也试着把我的电脑语言设置成韩语

    我已经花了两天的时间在这上面了,这简直是浪费时间。请帮忙

    • 更新: 我想我可能找到了罪犯。在创建B.txt的脚本中,我将一个长的韩语字符串一分为二(使用字符串


      作为指示符),并将它们分配给不同的列。我认为这种分裂行动最终导致了这个问题

    • 新问题: 如何在保留unicode的同时将这个长字符串一分为二?以前,我曾使用过
      strpos()
      substr()
      ,但据我了解,
      mb.*()
      函数可能正是我所需要的。。现在测试

    尝试将unicode修饰符(u)用于preg

    u(PCRE\u UTF8) 此修饰符打开与Perl不兼容的PCRE的附加功能。模式字符串被视为UTF-8。此修饰符可从Unix上的PHP4.1.0或更高版本以及win32上的PHP4.2.3获得。从PHP4.3.5开始检查模式的UTF-8有效性。

    尝试使用unicode修饰符(u)表示preg

    u(PCRE\u UTF8)
    此修饰符打开与Perl不兼容的PCRE的附加功能。模式字符串被视为UTF-8。此修饰符可从Unix上的PHP4.1.0或更高版本以及win32上的PHP4.2.3获得。UTF-8模式的有效性是从PHP 4.3.5开始检查的。

    也许这会有帮助:“我没有在其他字段/列上执行任何我还没有执行的操作”-但是您正在做什么?向我们展示您的代码,如果可能的话,一个完整、简短、自包含的示例来演示问题。很明显你在做什么,很抱歉我没有说得更好。我已经把代码贴出来了,所以你们可以自己看。请看一看。您可能会感兴趣。也许这会有所帮助:“我没有在其他字段/列上执行任何我尚未执行的操作”-但您正在执行的是什么?向我们展示您的代码,如果可能的话,请提供一个完整、简短、自包含的示例来演示问题。很明显你在做什么,很抱歉我没有说得更好。我已经把代码贴出来了,所以你们可以自己看。请看一看。你可能对这本书感兴趣。