CocoaPods作为iOS开发常用的包管理工具一直深受大家的喜爱,但是它出现问题的时候也让我们非常纠结。最近我就遇到这么一个让人纠结的错误ArgumentError - invalid byte sequence in UTF-8
,下面就来说下如何解决它。
我的问题是当你pod search <content>
时就会报这个错误,详细的错误提示如下:
/Users/yzq/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.2.1/lib/cocoapods/user_interface/error_report.rb:135:in `error_from_podfile': invalid byte sequence in UTF-8 (ArgumentError)
期间我尝试了重新下载repo、重新安装CocoaPods、甚至重新安装Ruby环境都没有解决,手动摊手。
当你Google这个错误或者在CocoaPods的issues里面搜索之后,你大致会发现以下几种解决方案。
字符集错误
这种方法认为你本地字符集没有配置好,需要配置成标准的en_US.UTF-8
,执行以下命令即可,或者将以下命令添加的相应的shell配置文件当中,例如:~/.bashrc或者~/.zshrc。
//使用命令locale可以查看本地字符集
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
然而这种方法并没有解决我的问题,我使用locale
命令查看同事的电脑的字符集,发现和我一样是zh_CN.UTF-8
,然而他的CocoaPods却没有问题,所以断定不是字符集的问题。
Podfile文件当中字符错误
我的错误是pod search
时出现的,和Podfile并没有什么关系,但如果你是在pod install
或者pod update
时出现了这个错误,请检查一下你Podfile当中的引号或者逗号,如果你使用了文本编辑器编辑过Podfile,那么问题就可能出现在这里,毕竟我们不太会注意到文本编辑器的编码。
这里就有一个案例,我感觉应该有蛮多人会犯这个错误吧。
索引文件错误
以上方案都未果时,我偶然发现也可以用Homebrew安装CocoaPods,我尝试性的用它重装了一下CocoaPods,结果pod search
时还是报错,但是错误变成了incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
。
接着我又在网上找了一下,发现了下面这么一条issue。
https://github.com/CocoaPods/CocoaPods/issues/5338
我按照里面的描述,删除了~/Library/Caches/CocoaPods/search_index.json
文件,pod search
奇迹般的可以了。
其中也大概提到出现这个问题的原因,可能是CocoaPods在创建索引时,我们ctrl+c
取消了这个操作,这导致索引生成的某些字符有问题,所以我们删除索引文件,重新生成即可。