[osg-users] How to open file with Unicode name using osgDB::readNodeFile?

2008-04-22 Thread Reed McKenna
We build an application for Windows XP using OpenSceneGraph. We have more
and more users from Asian countries who want to read in files that have
names with Asian characters. Windows' NTFS file system stores file names in
Unicode. How can I have osgDB::readNodeFile (and writeNodeFile, etc.) read
from and write to these files, using the full NTFS Unicode file name? If it
is not currently possible, are there any plans in the works to make it
possible?

 

Reed

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] How to open file with Unicode name using osgDB::readNodeFile?

2008-04-22 Thread Ben Discoe
Reed,

OSG on Windows passes your strings directly to fopen, or the C++ stream 
equivalent.  File paths are assumed to be in the local OS's filesystem 
character set.  This means that e.g. Chinese filenames can be opened on 
computers with Chinese version of Windows, and Western filenames can be opened 
on computer with Western version of Windows.  So, to do exactly what you 
describe below, OSG already does it.

However, it is true that if a Chinese user sent you a file with a Chinese 
filename, you could not open it with OSG on your non-Chinese OS.  To do that, 
OSG would indeed have to add Unicode filename support.  Unicode means that any 
file can be opened on any machine.

To support Unicode ,with the C standard lib on Windows, it is quite easy to 
replace usage of fopen with _wfopen.  However, there are many places in OSG's 
code base where the C++ stream IO is used instead of fopen.  AFAIK, there is no 
_w version of those methods, so OSG is stuck.

Just as a note, this whole thing is delightfully a non-issue on Mac OS X, and 
(some?) flavors of Linux, in which UTF-8 is the filesystem charset, so plain 
old fopen() handles everything.

-Ben

 --
 From: Reed McKenna
 Sent: Tuesday, April 22, 2008 4:00 PM
 
 We build an application for Windows XP using OpenSceneGraph. We have more
 and more users from Asian countries who want to read in files that have
 names with Asian characters. Windows’ NTFS file system stores file names
 in Unicode. How can I have osgDB::readNodeFile (and writeNodeFile, etc.)
 read from and write to these files, using the full NTFS Unicode file name?
 If it is not currently possible, are there any plans in the works to make
 it possible?
 
 Reed

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org