<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Unicode</title> <meta name="generator" content="DocBook XSL Stylesheets V1.73.2"> <link rel="start" href="index.html" title="Redland RDF Library Manual"> <link rel="up" href="reference-manual.html" title="Part II. Reference Manual"> <link rel="prev" href="redland-stream.html" title="Stream of triples (#librdf_statement)."> <link rel="next" href="redland-uri.html" title="URI"> <meta name="generator" content="GTK-Doc V1.10 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> <link rel="chapter" href="redland.html" title="Redland Overview"> <link rel="chapter" href="introduction.html" title="Introduction"> <link rel="part" href="tutorial.html" title="Part I. Tutorial"> <link rel="part" href="reference-manual.html" title="Part II. Reference Manual"> <link rel="chapter" href="objects.html" title="Objects in C"> <link rel="chapter" href="redland-storage-modules.html" title="Storage Modules"> <link rel="index" href="indexes.html" title="Index"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> <td><a accesskey="p" href="redland-stream.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="reference-manual.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">Redland RDF Library Manual</th> <td><a accesskey="n" href="redland-uri.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"><nobr><a href="#redland-unicode.synopsis" class="shortcut">Top</a> | <a href="#redland-unicode.description" class="shortcut">Description</a></nobr></td></tr> </table> <div class="refentry" lang="en"> <a name="redland-unicode"></a><div class="titlepage"></div> <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="redland-unicode.top_of_page"></a>Unicode</span></h2> <p>Unicode — Unicode utility functions.</p> </td> <td valign="top" align="right"></td> </tr></table></div> <div class="refsynopsisdiv"> <a name="redland-unicode.synopsis"></a><h2>Synopsis</h2> <pre class="synopsis"> typedef <a class="link" href="redland-unicode.html#librdf-unichar" title="librdf_unichar">librdf_unichar</a>; int <a class="link" href="redland-unicode.html#librdf-unicode-char-to-utf8" title="librdf_unicode_char_to_utf8 ()">librdf_unicode_char_to_utf8</a> (<a class="link" href="redland-unicode.html#librdf-unichar" title="librdf_unichar">librdf_unichar</a> c, byte *output, int length); int <a class="link" href="redland-unicode.html#librdf-utf8-to-unicode-char" title="librdf_utf8_to_unicode_char ()">librdf_utf8_to_unicode_char</a> (<a class="link" href="redland-unicode.html#librdf-unichar" title="librdf_unichar">librdf_unichar</a> *output, const byte *input, int length); byte* <a class="link" href="redland-unicode.html#librdf-utf8-to-latin1" title="librdf_utf8_to_latin1 ()">librdf_utf8_to_latin1</a> (const byte *input, int length, int *output_length); byte* <a class="link" href="redland-unicode.html#librdf-latin1-to-utf8" title="librdf_latin1_to_utf8 ()">librdf_latin1_to_utf8</a> (const byte *input, int length, int *output_length); void <a class="link" href="redland-unicode.html#librdf-utf8-print" title="librdf_utf8_print ()">librdf_utf8_print</a> (const byte *input, int length, FILE *stream); </pre> </div> <div class="refsect1" lang="en"> <a name="redland-unicode.description"></a><h2>Description</h2> <p> Utility functions to convert between UTF-8, full Unicode and Latin-1. Redland uses UTF-8 for all string formats (except where noted) but these may need to be converted to other Unicode encodings or downgraded with loss to Latin-1. </p> </div> <div class="refsect1" lang="en"> <a name="redland-unicode.details"></a><h2>Details</h2> <div class="refsect2" lang="en"> <a name="librdf-unichar"></a><h3>librdf_unichar</h3> <pre class="programlisting">typedef u32 librdf_unichar; </pre> <p> Unicode codepoint.</p> <p> </p> </div> <hr> <div class="refsect2" lang="en"> <a name="librdf-unicode-char-to-utf8"></a><h3>librdf_unicode_char_to_utf8 ()</h3> <pre class="programlisting">int librdf_unicode_char_to_utf8 (<a class="link" href="redland-unicode.html#librdf-unichar" title="librdf_unichar">librdf_unichar</a> c, byte *output, int length);</pre> <p> Convert a Unicode character to UTF-8 encoding. </p> <p> If buffer is NULL, then will calculate the length rather than perform it. This can be used by the caller to allocate space and then re-call this function with the new buffer.</p> <p> </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>c</code></em> :</span></p></td> <td> Unicode character </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td> <td> UTF-8 string buffer or NULL </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td> <td> buffer size </td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td> bytes written to output buffer or <0 on failure </td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2" lang="en"> <a name="librdf-utf8-to-unicode-char"></a><h3>librdf_utf8_to_unicode_char ()</h3> <pre class="programlisting">int librdf_utf8_to_unicode_char (<a class="link" href="redland-unicode.html#librdf-unichar" title="librdf_unichar">librdf_unichar</a> *output, const byte *input, int length);</pre> <p> Convert an UTF-8 encoded buffer to a Unicode character. </p> <p> If output is NULL, then will calculate the number of bytes that will be used from the input buffer and not perform the conversion.</p> <p> </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td> <td> Pointer to the Unicode character or NULL </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td> <td> UTF-8 string buffer </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td> <td> buffer size </td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td> bytes used from input buffer or <0 on failure </td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2" lang="en"> <a name="librdf-utf8-to-latin1"></a><h3>librdf_utf8_to_latin1 ()</h3> <pre class="programlisting">byte* librdf_utf8_to_latin1 (const byte *input, int length, int *output_length);</pre> <p> Convert a UTF-8 string to ISO Latin-1. </p> <p> Converts the given UTF-8 string to the ISO Latin-1 subset of Unicode (characters 0x00-0xff), discarding any out of range characters. </p> <p> If the output_length pointer is not NULL, the returned string length will be stored there.</p> <p> </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td> <td> UTF-8 string buffer </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td> <td> buffer size </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>output_length</code></em> :</span></p></td> <td> Pointer to variable to store resulting string length or NULL </td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td> pointer to new ISO Latin-1 string or NULL on failure </td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2" lang="en"> <a name="librdf-latin1-to-utf8"></a><h3>librdf_latin1_to_utf8 ()</h3> <pre class="programlisting">byte* librdf_latin1_to_utf8 (const byte *input, int length, int *output_length);</pre> <p> Convert an ISO Latin-1 encoded string to UTF-8. </p> <p> Converts the given ISO Latin-1 string to an UTF-8 encoded string representing the same content. This is lossless. </p> <p> If the output_length pointer is not NULL, the returned string length will be stored there.</p> <p> </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td> <td> ISO Latin-1 string buffer </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td> <td> buffer size </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>output_length</code></em> :</span></p></td> <td> Pointer to variable to store resulting string length or NULL </td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td> pointer to new UTF-8 string or NULL on failure </td> </tr> </tbody> </table></div> </div> <hr> <div class="refsect2" lang="en"> <a name="librdf-utf8-print"></a><h3>librdf_utf8_print ()</h3> <pre class="programlisting">void librdf_utf8_print (const byte *input, int length, FILE *stream);</pre> <p> Print a UTF-8 string to a stream. </p> <p> Pretty prints the UTF-8 string in a pseudo-C character format like \u<span class="emphasis"><em>hex digits</em></span> when the characters fail the <code class="function">isprint()</code> test.</p> <p> </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td> <td> UTF-8 string buffer </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>length</code></em> :</span></p></td> <td> buffer size </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td> <td> FILE* stream </td> </tr> </tbody> </table></div> </div> </div> </div> <div class="footer"> <hr> Generated by GTK-Doc V1.10</div> </body> </html>