The Daz importer has mainly been developed on my home computer,
although I have occasionally tested the code at work. Both computers are
very similar: both run Windows 7 and my user name on both is Thomas,
which is a standard Christian name without any strange characters.
However, I also own a laptop running Windows 10, which I have never used
very much, but I thought that it would be a good idea to test the code
on it.
So I created a new user on the laptop, whose
user name Åke Öst contains non-ascii characters, and downloaded Blender,
Daz Studio, and the Daz importer. Saving the .duf file in Åke's user
directory worked fine, and I could also export a json file to the same
folder. However, when I tried to import the .duf file, the error below
was encountered.
In Python the current user's home directory is represented by the string ~, which in this case should evaluate to
C:\Users\Åke Öst,
but instead Python thinks that it is
C:\WINDOWS\system32\config\systemprofile.
Since
no directory with that name exists, the importer can not find the paths
to the Daz directories, and the error is issued to alert the users
about this fact.
We
can inspect the paths at the top of the Settings panel. Both the first
Path to DAZ library and the Path to output errors start with the flawed
directory and will not be found. Fortunately, this problem is easy to
fix. Simply replace the incorrect
beginnings with the right one (the paths really contain the substrings
"Åke Öst", even if Blender uses a font that makes it indistinguishable
from "Åke Ost". Finally press Save Default Settings to avoid having to
do this correction every time Blender starts up.
Behind
the scenes another problem has been solved. The settings are stored in a
file in the current user's home directory, but as we just saw Python
failed to find that. If the home directory is not found, the script
instead tries to put the settings file in the same directory that the
script is stored in. Since this is usually located somewhere under the
home directory, the user should have both write and read permissions. At
least it worked for me.
The non-ascii characters
turned out to cause one more headache. The import script is stored in a
single location, and then I have made symbolic links (hard links or
junctions in Windows lingo) from Blender's addons folder. This means
that I don't have to update the script when a new Blender version comes
out, only the links. However, I make the links by running the mklink /j command at a DOS prompt, and that mangles the non-ascii characters. The string "Åke Öst" becomes "+ke Íst", and no link is created.
There is probably some way to make a terminal window understand non-ascii characters, but instead I downloaded the Link Shell Extension,
which is a graphical tool for making links. Worked like a dream. Just
be sure to download the appropriate prerequisite package before the tool
itself — both are linked to on the tool’s download page.
While
non-ascii characters caused some headache, they are still within the
UTF-8 character set. The code has not been tested with systems that use
Unicode, and I am completely sure that new problems will show up in such
settings.