[R] Problem with Windows clipboard and UTF-8
tom@@@k@||ber@ @end|ng |rom gm@||@com
Thu Oct 13 15:24:48 CEST 2022
On 9/30/22 15:05, Andrew Hart via R-help wrote:
> Hi everyone,
> Recently I upgraded to R 4.2.1 which now uses UTF-8 internally as its
> native encoding. Very nice. However, I've discovered that if I use
> writeClipboard to try and move a string containing accented characters
> to the Windows clipboard and then try and paste that into another
> application (e.g. notepad, Eclipse, etc.), the accents turn out all
> garbled. Here's an example:
> Pasting the result into this e-mail message yields
> As near as I can tell, the problem seems to have something to do with
> the format parameter of writeClipboard. By default, format has a value
> of 1, which tells the clipboard to receive Text in the machine's
> locale. If I set format=13 in the call, the accents transfer to the
> clipboard correctly:
> writeClipboard("categoría", format=13)
> and the result is
Ivan Krylov has kindly turned this into a bug report, please see
for more details. In short, yes, using format=13 is recommended, but
please note it has already been documented in ?writeClipboard.
> It seems that format=13 may be a better default now that R is using
> UTF-8. It would be nice not to have to specify the format every time I
> want to copy text to the clipboard with writeClipboard.
Yes, I agree, I've changed the default to format=13.
> Is writeClipboard supposed to perform any kind of encoding conversion
> or is the format parameter merely informing the clipboard of the kind
> of payload it's being handed?
> Btw, with pre-4.2.0 versions of R, this wasn't a problem. I am very
> much in favour of R using some kind of Unicode encoding natively, but
> this wrinkle seems to be something the user shouldn't have to deal
> with since the Windows clipboard is capable of holding Unicode text.
> Any advice would be gratefully received.
This is a bit complicated and more can be found in the bug report
response. In short, the clipboard is capable of holding either "text"
(then with locale information) or "Unicode text". One can ask Windows
for either content and Windows will do the conversion, it would convert
from "text" to "Unicode text" using that locale. If that locale is not
filled in explicitly, it is the current input language (so the
"keyboard" the user has selected at the time of the copying to
clipboard, e.g. of writeClipboard). If that locale encoding doesn't
match the R current native encoding, and you are using "text",
characters may be mis-represented. This could have happened even before
R 4.2.0, but is more likely from R 4.2.0 when it uses UTF-8. Going via
"Unicode text" resolves the issue as the conversion to/from UTF-16LE is
done by readClipboard/writeClipboard using the R current native encoding.
Users who don't want to deal with these complexities can use the
higher-level connections interface (?connections, "clipboard").
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> PLEASE do read the posting guide
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help