From 19b9427da7e2443c77a9ceda02546f9d8b9abd56 Mon Sep 17 00:00:00 2001 From: Enrico Forestieri Date: Mon, 8 Jan 2007 03:03:12 +0000 Subject: [PATCH] Fix problem with filename encoding in python script for graphics conversion * src/graphics/GraphicsConverter.C (build_script): convert the input filename from utf8 to the default locale encoding as it hopefully corresponds to the filesystem encoding. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16592 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/graphics/GraphicsConverter.C | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/graphics/GraphicsConverter.C b/src/graphics/GraphicsConverter.C index d3390e10df..64b23bb38d 100644 --- a/src/graphics/GraphicsConverter.C +++ b/src/graphics/GraphicsConverter.C @@ -282,13 +282,22 @@ static void build_script(FileName const & from_file, script << "#!/usr/bin/env python\n" "# -*- coding: utf-8 -*-\n" - "import os, shutil, sys\n\n" + "import os, shutil, sys, locale\n\n" "def unlinkNoThrow(file):\n" " ''' remove a file, do not throw if an error occurs '''\n" " try:\n" " os.unlink(file)\n" " except:\n" - " pass\n\n"; + " pass\n\n" + "def utf8ToDefaultEncoding(file):\n" + " ''' if possible, convert to the default encoding '''\n" + " try:\n" + " language, output_encoding = locale.getdefaultlocale()\n" + " if output_encoding == None:\n" + " output_encoding = 'latin1'\n" + " return unicode(file, 'utf8').encode(output_encoding)\n" + " except:\n" + " return file\n\n"; // we do not use ChangeExtension because this is a basename // which may nevertheless contain a '.' @@ -311,7 +320,9 @@ static void build_script(FileName const & from_file, // in python, but the converters might be shell scripts and have more // troubles with it. string outfile = addExtension(to_base.absFilename(), getExtension(from_file.absFilename())); - script << "infile = " << quoteName(from_file.absFilename(), quote_python) << "\n" + script << "infile = utf8ToDefaultEncoding(" + << quoteName(from_file.absFilename(), quote_python) + << ")\n" "outfile = " << quoteName(outfile, quote_python) << "\n" "shutil.copy(infile, outfile)\n";