[Spice-devel] [patch]spice-gtk: encoding problem when drag a file from client to guest

Cody Chan int64ago at gmail.com
Mon Feb 17 05:10:44 PST 2014


On Mon, Feb 17, 2014 at 8:47 PM, Marc-André Lureau <mlureau at redhat.com> wrote:
> Hi
>
> ----- Original Message -----
>> hi, here's my environment:
>> client: win7(default encoding is GBK)
>> guest the same with client
>> spice-gtk-0.23d
>>
>> a file in guest with a name of Chinese
>> the file name is wrong when drag it to guest desktop
>> (I think Japanese and Korean have the same problem )
>>
>> the following is my patch to " spice-gtk-0.23/gtk/channel-main.c"
>>
>> Regards
>>
>> --- spice-gtk-0.23/gtk/channel-main.c 2014-02-06 19:08:07.000000000 +0800
>> +++ spice-gtk-0.23_modified/gtk/channel-main.c 2014-02-17 20:12:55.037816310
>> +0800
>> @@ -2786,8 +2786,10 @@
>>
>> /* File name */
>> basename = g_file_get_basename(file);
>> - g_key_file_set_string(keyfile, "vdagent-file-xfer", "name", basename);
>
> From glib API reference, I understand basename is a byte string of unspecified encoding.
>
unspecified encoding == "utf-8" or unspecified encoding  == locale encoding?
do you mean locale encoding?
>> + gchar *basename_loc = g_locale_from_utf8(basename, -1, NULL, NULL, NULL);
>
> So this is probably wrong. You should also check for errors.

yeah, actually, i use g_convert(basename, -1, "gbk", "utf-8", ...) to
get a right result
but I don't think it's a general case, so patch it with g_locale_from_utf8(...)
I'll keep testing to Confirm the problem

> Instead, I think we should use g_file_info_get_display_name()
thx, I'd try
>> + g_key_file_set_string(keyfile, "vdagent-file-xfer", "name", basename_loc);
>> g_free(basename);
>> + g_free(basename_loc);
>> /* File size */
>> g_key_file_set_uint64(keyfile, "vdagent-file-xfer", "size", task->file_size);
>>
>
> Can you send patches using git-send-email (inline by default) or as attachments?

sorry, it's my first time to send a patch in mail list, thank you for Remind :)
> thanks


More information about the Spice-devel mailing list