在粘贴功能中使用日文字母

Using Japanese letters in paste function

我想从 google 趋势下载日语和英语搜索词的搜索查询数据。当我只使用英文搜索词时它工作得很好,但是当我包含日文字母时它就不起作用了。

我的代码如下(我为了这个例子加入了 default 关键字,以便于使用):

URL_GT=function(keyword="Toyota Aygo %2B Toyota Yaris %2B Toyota Vitz %2B
トヨタヴィッツ", year=2010, month=1, length=68){

  start="http://www.google.com/trends/trendsReport?hl=en-US&q="
  end="&cmpt=q&content=1&export=1"
  date=""

  queries=keyword[1]
  if(length(keyword)>1) {
    for(i in 2:length(keyword)){
      queries=paste(queries, "%2C ", keyword[i], sep="")
    }
  }

  #Dates
  if(!is.na(year)){
    date="&date="
    date=paste(date, month, "%2F", year, " ", month+length-1, "m", sep="")
  }

  URL=paste(start, queries, date, end, sep="")
  browseURL(URL)
}

当我查看在我的浏览器中调用的下载 URL 时,我可以看到日文字母已转换为一些 %、数字和字母,但它们根本不应该改变。

当我使用

Sys.setlocale("LC_CTYPE","japanese_JAPAN")

我得到以下粘贴结果

paste("トヨタヴィッツ","Toyota Vitz", sep = "")
[1] "ƒgƒˆƒ^ƒ”ƒBƒbƒcToyota Vitz"

我认为这很好地表明 paste() 函数似乎没有按预期工作。

使用

Sys.setlocale("LC_CTYPE","german_GERMANY")

我收到以下错误消息

unexpected INCOMPLETE_STRING
1: URL_GT=function(keyword="Toyota Aygo %2B Toyota Yaris %2B Toyota Vitz %2B ?

表明R无法解释日文字母。

我尝试寻找解决方案,但只能找到导致我更改语言环境的提示。如上所述,到目前为止,这对我不起作用。我也找到了这个tip,但是我得到了和那个问题的询问者一样的错误——即

Warning message: In Sys.setlocale("LC_CTYPE", "UTF-8") : OS reports request
to set locale to "UTF-8" cannot be honored 

非常感谢您的帮助!由于这是我第一次 post 我希望关于结构和细节的一切都很好。

我找到了一个适合我的解决方案。我不得不更改与 unicode 不兼容的程序的语言,以便日文本地能够正常工作。

在 Windows 8.1 上,您必须转到控制面板、时间、区域和语言、区域、管理,然后您可以在那里相应地更改语言 - 在我的情况下是日语 - 然后重新启动您的电脑。

如果您现在将本地设置为

Sys.setlocale("LC_CTYPE","japanese_JAPAN")

输入 paste 应该 return 您要求的内容,例如

paste("It works", "トヨタヴィッツ", sep=" ")
[1] "It works トヨタヴィッツ"

唯一让我感到困惑的是,当我在下载后打开 Excel 文件时,日文字母以一种新的乱码方式出现。

我尝试手动下载单词的数据并在 Excel 文件中得到相同的结果。所以我猜数据应该是正确的。不幸的是,在我更改我的 unicode 语言以查看 excel 是否也把它搞砸之前,我没有下载日语数据的 CSV 文件。但是当我再次将我的设置恢复为德语时,下载的文件中出现了相同的字母。