
\begin{DoxyItemize}
\item infos = Information about iconv plugin is in keys below
\item infos/author = Markus Raab \href{mailto:elektra@libelektra.org}{\texttt{ elektra@libelektra.\+org}}
\item infos/licence = BSD
\item infos/provides = conv
\item infos/needs =
\item infos/placements = postgetstorage presetstorage
\item infos/status = maintained unittest libc
\item infos/description = Converts values of keys between charsets
\end{DoxyItemize}\hypertarget{md_src_plugins_iconv_README_src_plugins_iconv_README_md}{}\doxysection{Introduction}\label{md_src_plugins_iconv_README_src_plugins_iconv_README_md}
This plugin is a filter plugin that converts between different character encodings.\hypertarget{md_src_plugins_iconv_README_autotoc_md252}{}\doxysection{Installation}\label{md_src_plugins_iconv_README_autotoc_md252}
See \mbox{\hyperlink{doc_INSTALL_md}{installation}}. The package is called {\ttfamily libelektra5-\/extra}.\hypertarget{md_src_plugins_iconv_README_autotoc_md253}{}\doxysection{Purpose}\label{md_src_plugins_iconv_README_autotoc_md253}
Consider a user insisting on a {\ttfamily latin1} character encoding because of some old application. All other users already use, for example, {\ttfamily UTF-\/8}. For these users, the configuration files are encoded in {\ttfamily UTF-\/8}. So we need a solution for the user with {\ttfamily latin1} to access the key database with proper encoding.

On the other hand, contemplate an XML file which requires a specific encoding. But the other key databases work well with the users encoding. So a quick fix for that backend is needed to feed that XML file with a different encoding.

The iconv plugin provides a solution for both scenarios. It converts between many available character encodings. With the plugin’s configuration the user can change the from and to encoding. The default values of the plugin configuration are\+: {\ttfamily from} encoding will be determined at run-\/time. {\ttfamily to} encoding is {\ttfamily UTF-\/8}.

Parameters\+:


\begin{DoxyItemize}
\item {\ttfamily to} is per default UTF-\/8, to have unicode configuration files
\item {\ttfamily from} is per default the users locale
\end{DoxyItemize}

Note that for writing the configuration {\ttfamily from} and {\ttfamily to} is swapped. A key database that requires a specific encoding can make use of it. To sum up, every user can select a different encoding, but the key databases are still properly encoded for anyone.\hypertarget{md_src_plugins_iconv_README_autotoc_md254}{}\doxysection{Example}\label{md_src_plugins_iconv_README_autotoc_md254}
For example {\ttfamily iconv/iconv.\+ini} should be {\ttfamily latin1}, but all users have {\ttfamily UTF-\/8} settings\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\# Mount the file `iconv/iconv.ini` using the `mini` plugin together with `iconv`}
\DoxyCodeLine{sudo kdb mount "{}\$PWD/src/plugins/iconv/iconv/iconv.ini"{} system:/tests/iconv mini iconv from=UTF-\/8,to=ISO-\/8859-\/1}
\DoxyCodeLine{}
\DoxyCodeLine{\# Check the file type of the mounted file}
\DoxyCodeLine{file -\/b "{}`kdb file system:/tests/iconv`"{}}
\DoxyCodeLine{\#> ISO-\/8859 text}
\DoxyCodeLine{}
\DoxyCodeLine{kdb get system:/tests/iconv/a         \# converts ISO-\/8859 to UTF-\/8}
\DoxyCodeLine{\#> hellö}
\DoxyCodeLine{}
\DoxyCodeLine{kdb set system:/tests/iconv/a öäß     \# converts UTF-\/8 to ISO-\/8859}
\DoxyCodeLine{kdb get system:/tests/iconv/a}
\DoxyCodeLine{\#> öäß}
\DoxyCodeLine{}
\DoxyCodeLine{\# Cleanup}
\DoxyCodeLine{kdb set system:/tests/iconv/a hellö}
\DoxyCodeLine{sudo kdb umount system:/tests/iconv}

\end{DoxyCode}
 