The incorrect result incurs when the file path contains Chinese character. It seems that dirname/basename action on unit of byte instead of char, so the result in the following example is half of what is expected.> g<-"d:\\$BG!2L4^M-CfJ8(B\\$BG!2L4^M-CfJ8(B.txt" > dirname(g)[1] "d:/$BG!2L4^(B"> basename(g)[1] "$BG!2L4^M-(B" -- HUANG Ronggui, Wincent http://ronggui.huang.googlepages.com/ Bachelor of Social Work, Fudan University, China Master of sociology, Fudan University, China Ph.D. Candidate, CityU of HK. [[alternative HTML version deleted]]
> sessionInfo()R version 2.7.0 Patched (2008-04-24 r45485) i386-pc-mingw32 locale: LC_COLLATE=Chinese_People's Republic of China.936;LC_CTYPE=Chinese_People's Republic of China.936;LC_MONETARY=Chinese_People's Republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese_People's Republic of China.936 attached base packages: [1] stats graphics grDevices utils datasets methods [7] base>2008/5/15 ronggui <ronggui.huang@gmail.com>:> The incorrect result incurs when the file path contains Chinese character. > It seems that dirname/basename action on unit of byte instead of char, so > the result in the following example is half of what is expected. > > > g<-"d:\\$BG!2L4^M-CfJ8(B\\$BG!2L4^M-CfJ8(B.txt" > > dirname(g) > [1] "d:/$BG!2L4^(B" > > basename(g) > [1] "$BG!2L4^M-(B" > > > -- > HUANG Ronggui, Wincent http://ronggui.huang.googlepages.com/ > Bachelor of Social Work, Fudan University, China > Master of sociology, Fudan University, China > Ph.D. Candidate, CityU of HK.-- HUANG Ronggui, Wincent http://ronggui.huang.googlepages.com/ Bachelor of Social Work, Fudan University, China Master of sociology, Fudan University, China Ph.D. Candidate, CityU of HK. [[alternative HTML version deleted]]
I'm sorry, but that example make no sense to me -- you need to mark the encoding (and don't send HTML that will get stripped). This is presumably Windows, given the name. On Thu, 15 May 2008, ronggui wrote:> The incorrect result incurs when the file path contains Chinese character. > It seems that dirname/basename action on unit of byte instead of char, so > the result in the following example is half of what is expected.No, it works in widechars, that is UCS-2. I have a suspicion of what the problem is (it is related to attempts to handle embedded nuls), so please try tomorrow's R-patched to see if I have fixed it. If that does not work, we need a reproducible example, and that means a message in a known encoding. (One way to do so is to attach a plain text message, and tell us in the body of the message the encoding you used.)>> g<-"d:\\$BG!2L4^M-CfJ8(B\\$BG!2L4^M-CfJ8(B.txt" >> dirname(g) > [1] "d:/$BG!2L4^(B" >> basename(g) > [1] "$BG!2L4^M-(B" > > > -- > HUANG Ronggui, Wincent http://ronggui.huang.googlepages.com/ > Bachelor of Social Work, Fudan University, China > Master of sociology, Fudan University, China > Ph.D. Candidate, CityU of HK. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595