首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP混合UTF-8编码读取CSV

PHP混合UTF-8编码读取CSV
EN

Stack Overflow用户
提问于 2013-10-12 12:46:34
回答 1查看 1.4K关注 0票数 1

我有一个问题,我认为谷歌很容易,但似乎没有那么容易。好吧,我的问题是:

我必须读取一个CSV文件,其中有一个坏的和不同的编码。我无法手动更正CSV文件,所以我必须在我的应用程序中处理它。因此CSV文件可以有以下编码:

‘5’和‘M’在同一个文件中放置了belmarkt‘

如果我解码(utf8_decode),右边的是正确的,左边的是正确的(这是正确的)。当我试图找出编码(mb_detect_encoding),我总是得到的答案是,这是UTF-8。

我仍然尝试了以下解决方案:

代码语言:javascript
运行
复制
public function convert( $str ) {
    return iconv( "Windows-1252", "UTF-8", $str );
}

代码语言:javascript
运行
复制
private function getUmlauteArray() { 
    return array( 'ü'=>'ü', 'ä'=>'ä', 'ö'=>'ö', 'Ö'=>'Ö', 'ß'=>'ß', 'à '=>'à', 'á'=>'á', 'â'=>'â', 'ã'=>'ã', 'ù'=>'ù', 'ú'=>'ú', 'û'=>'û', 'Ù'=>'Ù', 'Ú'=>'Ú', 'Û'=>'Û', 'Ü'=>'Ü', 'ò'=>'ò', 'ó'=>'ó', 'ô'=>'ô', 'è'=>'è', 'é'=>'é', 'ê'=>'ê', 'ë'=>'ë', 'À'=>'À', 'Ã'=>'Á', 'Â'=>'Â', 'Ã'=>'Ã', 'Ä'=>'Ä', 'Ã…'=>'Å', 'Ç'=>'Ç', 'È'=>'È', 'É'=>'É', 'Ê'=>'Ê', 'Ë'=>'Ë', 'ÃŒ'=>'Ì', 'Ã'=>'Í', 'ÃŽ'=>'Î', 'Ã'=>'Ï', 'Ñ'=>'Ñ', 'Ã’'=>'Ò', 'Ó'=>'Ó', 'Ô'=>'Ô', 'Õ'=>'Õ', 'Ø'=>'Ø', 'Ã¥'=>'å', 'æ'=>'æ', 'ç'=>'ç', 'ì'=>'ì', 'í'=>'í', 'î'=>'î', 'ï'=>'ï', 'ð'=>'ð', 'ñ'=>'ñ', 'õ'=>'õ', 'ø'=>'ø', 'ý'=>'ý', 'ÿ'=>'ÿ', '€'=>'€' );
}

public function fixeUmlaute($string) {                  
    $umlaute = $this->getUmlauteArray();
    foreach ($umlaute as $key => $value){
        $value = str_replace($key, $value, $string);
    } 
    return $string;
}

代码语言:javascript
运行
复制
function valid_utf8( $string ){
    return !((bool)preg_match('~[\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\xC0\xC1]~ms',$string));
}

这些都是我在谷歌搜索中找到的改变编码的解决方案.(也许这个“集合”可以帮助其他人.)那么,我如何才能真正发现错误的字符,或者我的错误在哪里呢?

有人能给我个提示吗?

格列茨

V

EN

回答 1

Stack Overflow用户

发布于 2013-10-12 13:56:43

有一个不错的PHP类可以帮助您:https://github.com/neitanod/forceutf8 --它将将任何字符集转换为UTF8,并为您处理检测。希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19334340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档