を維持されていません書き込みデータは、私は、次のような文字列を持っているエンコーディング
<U+3066><U+3044><U+305F><U+3060><U+3051><U+308B><U+306A><U+3089>
このプロセスでは何が問題になっていますか?私はこれは、Windows 7上でR.
に表示される文字列を表示するために書かれたテキストファイルをしたいと思い、Rバージョン2.15
を維持されていません書き込みデータは、私は、次のような文字列を持っているエンコーディング
<U+3066><U+3044><U+305F><U+3060><U+3051><U+308B><U+306A><U+3089>
このプロセスでは何が問題になっていますか?私はこれは、Windows 7上でR.
に表示される文字列を表示するために書かれたテキストファイルをしたいと思い、Rバージョン2.15
あなたは引数fileEncoding
を使用してみましたか?
write.table(str, file="chartest", quote=F, col.names=F, row.names=F, fileEncoding="UTF-8")
これはWindowsのRの厄介な「機能」です。これまでに私が見つけた唯一の解決策は、問題のテキストのスクリプトを解読するのに必要な適切なロケールにロケールを一時的かつプログラム的に切り替えることです。したがって、上記の場合、日本語のロケールを使用します。
## This won't work on Windows
str <- "ていただけるなら"
Encoding(str) #returns "UTF-8"
write.table(str, file="c:/chartest.txt", quote=F, col.names=F, row.names=F)
## The following should work on Windows - first grab and save your existing locale
print(Sys.getlocale(category = "LC_CTYPE"))
original_ctype <- Sys.getlocale(category = "LC_CTYPE")
## Switch to the appropriate local for the script
Sys.setlocale("LC_CTYPE","japanese")
## Now you can write your text out and have it look as you would expect
write.table(str, "c:/chartest2.txt", quote = FALSE, col.names = FALSE,
row.names = FALSE, sep = "\t", fileEncoding = "UTF-8")
## ...and don't forget to switch back
Sys.setlocale("LC_CTYPE", original_ctype)
上記のスクリーンショットでは、2つのファイルが生成されています。最初のファイルにはUnicodeのコードポイントが表示されます。これは必要なものではありませんが、2番目のコードポイントには通常期待されるグリフが表示されます。
これまでのところ、誰もが、これは私がthisポストに言及としてPerlは、何らかの形で問題の周りを取得しますので、それは、Windowsの避けられない機能ではありませんR.になぜ起こるか私に説明することはできませんでした。
お返事ありがとうございます。日本語は単なる例であり、すべての言語タイプで動作するものが欲しいです。しかし、有望だとは思わない。 – qua
@qua - はい、私はそれがあなたが奇妙な場所で日本語の文字列を壊したとすると、ランダムな例かもしれないと思った。残念ながら、この時点で私はRの方が良い解決策はないと思っていますが、見つけたらこの質問への回答を作成してください!スクリプトを事前に知らなければ、(他の問題の中でも)使用されているスクリプトを推測する必要があり、エンコーディングタイプを確立する確かな方法がないため、私のアプローチでは苦労するかもしれません。 – SlowLearner
@SlowLearner LC_CTYPEのすべての有効な値をリストする方法はありますか? – panterasBox
提案していただきありがとうございます。それを試しても動作していないようです。 – qua
それでは、私は自分の仕事用コンピュータ(Mac OSX上)で試してみましたが、それ以来私は自宅のコンピュータ(Windows 7)で試してみましたが、それは本当にありませんでした。 – plannapus