2010-10-07 60 views
0

我正在做一种迂回实验的事情,我从远程页面的表格中提取数据以将其转化为ICS,以便我可以找出此运动队何时正在玩(因为我找不到任何地方信息比本表更容易获得),但这只是给你一些背景。为什么PHP的utf8_encode会破坏我的utf-8字符串?

我使用cURL拉取这些数据并使用domDocument解析它。然后我拿它并解析它以获取我需要的信息。反对的球队给了我麻烦。当我在初始PHP页面上显示数据时,它是正确的。但是,当我写入ICS文件时,特殊的UTF-8字符会混乱。我认为utf8_encode可以解决这个问题,但实际上它似乎有相反的效果:当我在我的数据上运行该功能时,甚至是显示在页面上的东西(它已正确显示),而不是在单独的ICS文件中写错了),是不正确的。举一个例子:它将“Inđija”变成“InÄija”。

只要在PHP中处理UTF-8字符串,任何提示或资源?我的服务器(远程主机)也没有安装mbstring,这很痛苦。

回答

3

utf8_encode将ISO 8859-1中的字符串编码为UTF-8。如果你把UTF-8放入它,它会把它解释为ISO 8859-1,从而产生mojibake。

为了解决您的第一个问题,在此之前,我想知道原始问题中哪些“特殊”字符会被搞乱,以及它们被混淆的方式是什么?

+1

就像我说过的,đ(d通过它的一条直线,dj)变成了Ä(有时另一个角色出现在这个旁边,这取决于我在哪里看到它)。我是否UTF8_encode呢。 – 2010-10-07 16:54:05

+0

另外č和Č正在变成Ä。看起来每个带有变音符号的字符(这是来自拉丁塞尔维亚语)正在变成Ä。 – 2010-10-07 16:56:24

+0

你在读什么ICS文件?您是否尝试过在开始时编写BOM? – 2010-10-07 17:13:42

相关问题