Re: [xsl] Outputting UTF-8

Subject: Re: [xsl] Outputting UTF-8
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 25 Mar 2017 14:50:08 -0000
On 25.03.2017 15:39, Mark Wilson pubs@xxxxxxxxxxxx wrote:
While writing and testing my XSL stylesheet, the direct output was in
UTF-8. However, as soon as I switched to result-document, I got garbage
characters for diacritics from my original xml.  That is, for 'ZC<rich',
I get ' ZCB<rich'. Except for the absence of UTF-8, everything else works
fine. I am assuming that I have declared result-document incorrectly, so
have not included the input or full stylesheet. Below is the declaration:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:xs="http://www.w3.org/2001/XMLSchema"; exclude-result-prefixes="xs"
version="2.0">

<xsl:strip-space elements="*"/>

    <xsl:template match="/">
        <xsl:for-each select="collection('../xml/?select=*.xml')">
            <xsl:apply-templates/>
        </xsl:for-each>
    </xsl:template>

    <xsl:template match="adlibXML">
        <xsl:variable name="file-name-out" select="concat('../work/',
substring-before((tokenize(document-uri(/),'/'))[last()], '.'), '.csv')"/>
        <xsl:result-document href="{$file-name-out}" encoding="UTF-8"
method="text">
            <xsl:apply-templates/>
        </xsl:result-document>
    </xsl:template>

<!-- other templates -->
</xsl:stylesheet>

Well, with a text output format like .csv I don't think there is any way the application reading the file can identify the encoding so perhaps the software you use to read or display the CSV file simply treats it as an 8-bit encoding and that way the two byte UTF-8 representation of that non-ASCII character is displayed as two separate characters. So how do you look at the CSV, can't you change the settings of that software to open as UTF-8?


Current Thread