将R中的UTF-8特殊字符斩首
在我抓取了一张名单后,我在R中有以下名字:将R中的UTF-8特殊字符斩首,r,string,R,String,在我抓取了一张名单后,我在R中有以下名字: DAPHN\303\211 DE MEULEMEESTER 如果我使用tolower函数,则所有字母都设置为小写,但特殊字符除外。实现这一点的最佳方法是什么?原因是您的语言环境是C。非ASCII特殊字符及其字母大小写分类在该语言环境下无法识别。您应该能够通过切换到UTF-8语言环境使其工作: Sys.setlocale(locale='C'); ## [1] "C/C/C/C/C/en_CA.utf-8" tolower('DAPHN\303\211
DAPHN\303\211 DE MEULEMEESTER
如果我使用tolower函数,则所有字母都设置为小写,但特殊字符除外。实现这一点的最佳方法是什么?原因是您的语言环境是C。非ASCII特殊字符及其字母大小写分类在该语言环境下无法识别。您应该能够通过切换到UTF-8语言环境使其工作:
Sys.setlocale(locale='C');
## [1] "C/C/C/C/C/en_CA.utf-8"
tolower('DAPHN\303\211 DE MEULEMEESTER');
## [1] "daphn\303\211 de meulemeester"
Sys.setlocale(locale='en_CA.UTF-8');
## [1] "en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.utf-8"
tolower('DAPHN\303\211 DE MEULEMEESTER');
## [1] "daphné de meulemeester"
en_CA.UTF-8
对我来说很有意义,因为我在加拿大,但如果你在美国(例如),你可能会想要en_US.UTF-8
。我认为,对于任何国家,您都应该能够用两个字母的国家代码替换CA
/US
,以获得最适合您所在位置的语言环境。原因是您的语言环境是C。非ASCII特殊字符及其字母大小写分类在该语言环境下无法识别。您应该能够通过切换到UTF-8语言环境使其工作:
Sys.setlocale(locale='C');
## [1] "C/C/C/C/C/en_CA.utf-8"
tolower('DAPHN\303\211 DE MEULEMEESTER');
## [1] "daphn\303\211 de meulemeester"
Sys.setlocale(locale='en_CA.UTF-8');
## [1] "en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.utf-8"
tolower('DAPHN\303\211 DE MEULEMEESTER');
## [1] "daphné de meulemeester"
en_CA.UTF-8
对我来说很有意义,因为我在加拿大,但如果你在美国(例如),你可能会想要en_US.UTF-8
。我认为,对于任何国家/地区,您都应该能够用两个字母的国家/地区代码替换CA
/US
,以获得最适合您所在位置的区域设置。在不更改系统区域设置的情况下,您可以使用stringi
包执行区域设置感知文本转换:
library(stringi)
her_name <- "DAPHN\303\211 DE MEULEMEESTER"
stri_trans_tolower(her_name, locale="en_CA")
库(stringi)
在不更改系统区域设置的情况下,您可以使用stringi
包进行区域设置感知文本转换:
library(stringi)
her_name <- "DAPHN\303\211 DE MEULEMEESTER"
stri_trans_tolower(her_name, locale="en_CA")
库(stringi)
她的名字我的问题被移到这里,因为有一个类似的问题。
还可以通过将角色转换为已知角色来解决此问题
x<-c("Sn. İLETİŞİM BİLGİLERİNİZ GUNCELLENMISTIR.")
x<-tolower(x)
x
[1] "sn. İletİşİm bİlgİlerİnİz guncellenmistir."
x我的问题被移到这里,因为有一个类似的问题。
还可以通过将角色转换为已知角色来解决此问题
x<-c("Sn. İLETİŞİM BİLGİLERİNİZ GUNCELLENMISTIR.")
x<-tolower(x)
x
[1] "sn. İletİşİm bİlgİlerİnİz guncellenmistir."
xit工作tolower(“DAPHN\303\211 DE MEULEMEESTER”)
ddisplays“DAPHNéDE MEULEMEESTER”
这可能与语言环境有关。你从Sys.getlocale()中得到了什么代码>?我得到了标准的“C”,我是否应该将其设置为其他值?它可以tolower(“DAPHN\303\211 DE MEULEMEESTER”)
ddisplays“DAPHNéDE MEULEMEESTER”
这可能与语言环境有关。你从Sys.getlocale()中得到了什么代码>?我得到了标准的“C”,我应该将其设置为其他值吗?谢谢,这很有效。但如果我现在把它上传到SQL,有些字符会变得更奇怪,比如版权符号。我是否必须将SQL中的设置更改为?您的DBMS是什么?你怎么上传的?上传后你是如何查看文本的?我开始弄明白了:我将语言环境从“C”更改为“UTF-8”,现在我可以使用一些正则表达式代码,比如[[:upper:],它对特殊字符也有效。我将MySQL数据库中的编码更改为UTF-8,现在字符已正确存储在数据库中。谢谢您的帮助。但如果我现在把它上传到SQL,有些字符会变得更奇怪,比如版权符号。我是否必须将SQL中的设置更改为?您的DBMS是什么?你怎么上传的?上传后你是如何查看文本的?我开始弄明白了:我将语言环境从“C”更改为“UTF-8”,现在我可以使用一些正则表达式代码,比如[[:upper:],它对特殊字符也有效。我将MySQL数据库中的编码更改为UTF-8,现在字符已正确存储在数据库中。