[Rd] `basename` and `dirname` change the encoding to "UTF-8"
kev|nu@hey @end|ng |rom gm@||@com
Mon Jun 29 21:00:06 CEST 2020
Did you test with R 4.0.2 or R-devel? A bug related to this issue was
On Mon, Jun 29, 2020 at 11:51 AM Duncan Murdoch
<murdoch.duncan using gmail.com> wrote:
> On 29/06/2020 10:39 a.m., Johannes Rauh wrote:
> > Dear R Developers,
> > I noticed that `basename` and `dirname` always return "UTF-8" on Windows (tested with R-4.0.0 and R-3.6.3):
> >> p <- "Föö/Bär"
> >> Encoding(p)
> >  "latin1"
> >> Encoding(dirname(p))
> >  "UTF-8"
> >> Encoding(basename(p))
> >  "UTF-8"
> > Is this on purpose? At least I did not find any relevant comment in the documentation of `dirname`/`basename`.
> > Background: I'm currently struggeling with a directory name containing a latin1-character. (I know that this is a bad idea, but I did not create the directory and I cannot rename it.) I now want to pass a latin1-directory name to a function, which internally uses `tools::makeLazyLoadDB`. At that point, internally, `dirname` is called, which changes the encoding, and things break. If I use `debug` to halt the processing and "fix" the encoding, things work as expected.
> > So, if possible, I would prefer that `dirname` and `basename` preserve the encoding.
> Actually, makeLazyLoadDB isn't exported from tools, so strictly speaking
> you shouldn't be calling it. Or perhaps you have a good reason to call
> it, and should be asking for it to be exported, or you are calling a
> published function which calls it: in either case it should probably be
> fixed to accept UTF-8.
> But it doesn't call dirname or basename, so maybe the function that
> calls it is the one that needs fixing.
> In any case, while asking dirname() and basename() to preserve the
> encoding sounds reasonable, it seems like it would just be covering up a
> deeper problem.
> Duncan Murdoch
> R-devel using r-project.org mailing list
More information about the R-devel