I wanted to use the encrypted filename feature, but first of all it did not work (on my Android device), it only created slightly altered filenames that still contained the original filename (I x2 checked by logging in to the webbased edition of my cloud storage).
That made me read your article on filename encryption and I got quite puzzled as to the way you have implemented this.
Why do you not just hash the filenames or assign them simple IDs?
A filename plus a salt ought to "encrypt" the filenames sufficiently and thus avoiding the "Chinese" character issues you describe and keeping a seperate table of the IDs (and the hash of the encrypted file) in case some service alters the filename (which you describe in your article on the subject).
As I see it there is several ways where you could achieve filename "encryption" in more compatible and more efficient ways than what you described in your article.
SQlite may be your friend for maintaining such info in a more efficient way.