我正在尝试给我的日语推文发短信,并且遇到了看似无法解决的字符编码问题。
在挖掘推文并设置语言环境后,Sys.setlocale("LC_ALL", "Japanese_Japan.932")
我得到了一个看起来符合预期的数据框:
我想通过日语的 Tokenizer 运行这些推文,即RMeCab
基于MeCab
(全部可用here)。MeCab
可以在和其他一些中编译UTF-8
,SHIFT-JIS
但是以另一种编码重新编译不会使我的问题消失甚至改变最终结果。
因此,在编译MeCab
和安装之后RMeCab
,我提取了第一条推文并尝试使用
tweet1 <- trump_ja[1,5]
x <- RMeCabC(str = tweet1)
这会产生以下输出:
不幸的是,这些不是正确的日文字符。我尝试了以下交替SHIFT-JIS
和UTF-8
编码(以及这些更改的所有组合)来克服这个问题:
- 使用不同的编码打开 R 脚本(有所不同,但只是显示不同的乱码,所以我假设乱码发生在 RMeCab 中)
Sys.setlocale("LC_ALL", "English_United States.1252")
在和之间切换语言环境Sys.setlocale("LC_ALL", "Japanese_Japan.932")
- 以不同的编码重新编译 MeCab
我现在排在最后,想寻求帮助。
编辑:我现在发现iconv (result, from = "UTF8", to = "UTF-8")
在标记化(和乱码)字符串上运行转换会显示标记的正确日文字符。这看起来没有多大意义,但它确实有效。但是,我想避免这个额外的步骤,因为转换仅适用于字符串,而不适用于列表或向量。