Internally mediatomb sent to DSM-320 as utf-8, and seems it's all correct with mediatomb when I grab the packet with 'wireshark', but DSM-320 show those chinese characters as '?', anybody know whether DSM-320 support those characters or not?
I am sure it is not a issue with mediatomb, will it work if I change the default charset as 'gb2312' by modifying c code of mediatomb?
Well, first of all - UPnP enforces the use of UTF-8, so beware that things may go terribly wrong if you modify that. Internally, we use UTF-8 as well, so we convert everything that is coming in, into UTF-8; since we can not always recognize the input we give the user the possibility to set the charset of the filesystem (to make sure the filenames are imported correctly) and also the charset of the metadata (like id3 tags and so on). This can be done via the config.xml file, using the <filesystem-charset> and <metadata-charset> fields (refer to the README for more information).
So, if you imported your data correctly, then you should see everything as it should be in the MediaTomb web UI - it uses UTF-8 as well.
Now, regarding the DSM-320: I do not know if it supports Chinese characters, but I do know that someone was able to add Cyrillic support to the firmware. That means - you should be able to create a firmware with Chinese support. If you can't find it, let me know and I will look it up for you. I know at least one DSM-320 user who uses this firmware.