[Easytag-mailing] EasyTAG 0.31_gtk2.4_pre3 has been released!



Hi,

       A new developing version of the GTK2 port of EasyTAG have been
released today.
This version contains lots of bufixes and especially to fix the problem
with UTF-8 filenames (thanks to Daniel).
As, it is still an "unstable" version, all bug reports are the welcome...

For people that still have problem with UTF-8 filenames, please have a look to the paragraph "File Name Encodings" at the page
http://developer.gnome.org/doc/API/2.0/glib/glib-Character-Set-Conversion.html
Because you may need to use the environment variable G_FILENAME_ENCODING...


The sources are available from the habitual page
http://easytag.sourceforge.net


What is new (since 0.31_gtk2.4_pre2) ?
======================================

    * UTF-8 filename fixes (thanks to Daniel Drake),
    * Added ability to request Cddb database automatically from the
      selected files (computing the CddbId) (thanks to Justus Schwartz),
    * When applying Cddb results to the files, the cddb genre is
      converted to an ID3 genre,
    * Added ability to convert filename extension to lower or upper
      case,
    * Removed old function to keep the tree browser in memory (to not
      refresh it automatically when collapsing and expanding a node),
    * Fixed problem with UTF-8 strings and the process fields scanner
      (thanks to Baris Cicek),
    * Fixed ability to open a file with the popup menu entry "Open
      File(s) with ...",
    * Fixed displaying search result to red if matching
    * Fixed displaying of the last selected file when selecting
      severals files,
    * Fixed error messages in the Artist/Album view,
    * French translation updated,
    * Danish translation updated (thanks to Morten Brix Pedersen),
    * Italian translation updated (thanks to Kostantino),
    * German translation updated (thanks to Götz Waschk).

Regards,
Jerome

--
EasyTAG - Tag editor for MP3 and Ogg Vorbis files
http://easytag.sourceforge.net
--
Jerome COUDERC <j couderc ifrance com>








Title: Character Set Conversion

Description

File Name Encodings

Historically, Unix has not had a defined encoding for file names: a file name is valid as long as it does not have path separators in it ("/"). However, displaying file names may require conversion: from the character set in which they were created, to the character set in which the application operates. Consider the Spanish file name "Presentación.sxi". If the application which created it uses ISO-8859-1 for its encoding, then the actual file name on disk would look like this:

Character:  P  r  e  s  e  n  t  a  c  i  ó  n  .  s  x  i
Hex code:   50 72 65 73 65 6e 74 61 63 69 f3 6e 2e 73 78 69
      

However, if the application use UTF-8, the actual file name on disk would look like this:

Character:  P  r  e  s  e  n  t  a  c  i  ó     n  .  s  x  i
Hex code:   50 72 65 73 65 6e 74 61 63 69 c3 b3 6e 2e 73 78 69
      

Glib uses UTF-8 for its strings, and GUI toolkits like GTK+ that use Glib do the same thing. If you get a file name from the file system, for example, from readdir(3) or from g_dir_read_name(), and you wish to display the file name to the user, you will need to convert it into UTF-8. The opposite case is when the user types the name of a file he wishes to save: the toolkit will give you that string in UTF-8 encoding, and you will need to convert it to the character set used for file names before you can create the file with open(2) or fopen(3).

By default, Glib assumes that file names on disk are in UTF-8 encoding. This is a valid assumption for file systems which were created relatively recently: most applications use UTF-8 encoding for their strings, and that is also what they use for the file names they create. However, older file systems may still contain file names created in "older" encodings, such as ISO-8859-1. In this case, for compatibility reasons, you may want to instruct Glib to use that particular encoding for file names rather than UTF-8. You can do this by specifying the encoding for file names in the G_FILENAME_ENCODING environment variable. For example, if your installation uses ISO-8859-1 for file names, you can put this in your ~/.profile:

export G_FILENAME_ENCODING=ISO-8859-1
      

Glib provides the functions g_filename_to_utf8() and g_filename_from_utf8() to perform the necessary conversions. These functions convert file names from the encoding specified in G_FILENAME_ENCODING to UTF-8 and vice-versa. Figure 1, “Conversion between File Name Encodings” illustrates how these functions are used to convert between UTF-8 and the encoding for file names in the file system.

Figure 1. Conversion between File Name Encodings

Checklist for Application Writers

This section is a practical summary of the detailed description above. You can use this as a checklist of things to do to make sure your applications process file name encodings correctly.

  1. If you get a file name from the file system from a function such as readdir(3) or gtk_file_chooser_get_filename(), you do not need to do any conversion to pass that file name to functions like open(2), rename(2), or fopen(3) — those are "raw" file names which the file system understands.

  2. If you need to display a file name, convert it to UTF-8 first by using g_filename_to_utf8(). If conversion fails, display a string like "Unknown file name". Do not convert this string back into the encoding used for file names if you wish to pass it to the file system; use the original file name instead. For example, the document window of a word processor could display "Unknown file name" in its title bar but still let the user save the file, as it would keep the raw file name internally. This can happen if the user has not set the G_FILENAME_ENCODING environment variable even though he has files whose names are not encoded in UTF-8.

  3. If your user interface lets the user type a file name for saving or renaming, convert it to the encoding used for file names in the file system by using g_filename_from_utf8(). Pass the converted file name to functions like fopen(3). If conversion fails, ask the user to enter a different file name. This can happen if the user types Japanese characters when G_FILENAME_ENCODING is set to ISO-8859-1, for example.

 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]