fteqccgui internally utilises utf-8 text. the text editor stuff should all do unicode copy+paste stuff.
when saving, it is meant to utilise the same BOM that was originally used when opening the file, but there may be some char conversions if you had saved your file as utf-16, and these may fail if you have invalid encodings.
pasting fun chars from external tools that generate non-unicode 'quake-encoded' chars will be assumed to be whatever your current locale is and result in utf-8 codepoints when pasted into fteqccgui (and later compiled into qc strings). the file will then be saved as utf-8 without a bom (unless the file originally had one).
additionally, it is basically impossible to get microsoft's text editors (wordpad+notepad) to use the same utf-8 encoding that the file was originally saved with. they have a nasty tendancy to strip boms and convert encodings (at least when the extension is not .txt).
thus stick to ascii only. it is just not practical nor reliable to support other character encodings in windows.
you can directly encode specific quake char values in qc strings with \xXX, you can toggle between white/red chars with \s, and you can get 'golden numbers' with \0-9. Doing this will typically be more readable in the first place, and will not have any svn / git conversion issues, etc.
regarding skins, by the 'the skins dir', you mean you're doing this in quakeworld?
writebyte(MSG_ALL, svc_setinfo);
writebyte(MSG_ALL, self.colormap-1);
writestring(MSG_ALL, "skin");
writestring(MSG_ALL, "omgwtf");
where omgwtf is the string name to utilize.
you can use search_begin/search_end/search_getsize/search_getfilename to enumerate files inside a given path (if the server supports that - read: fte or dp, but dp doesn't do qw). or you can use frik_file's fopen etc functions to read allowed names from a file.
if you're focusing on NQ, skins are embedded into the mdl itself (and are selected by setting self.skin, like on armour pickups) and there is no way to tell how many skins are stored inside it, except with fte where there is the skintoname builtins which might be useful to you (null and empty results have distinct meanings, depending on model formats). some clients support replacement textures beyond the skins stored internally to the model and in this case you can use the file enumeration stuff I already mentioned for those, the exact names used depends on the client.
this won't work if you have dedicated servers or anything, of course, as the files need to be clientside and nq clients don't download. yay csqc?

.