# How to insert code with accents with listings?

I'm trying to insert source code in LaTeX with using listings, but my code has accents and pdflatex gives me this error:

Unicode char \u8:�\expandafter not set up for use with LaTeX.


This is a code the reproduces the error.

## example.tex

\documentclass{article}
\usepackage{listings}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}

\begin{document}

\lstinputlisting[language=C++]{code.cpp}

\end{document}


## code.cpp

// Código con una tilde


What can I do to generate the PDF correctly?

You can load the package listingsutf8 and then set the encoding using \lstset{inputencoding=utf8/latin1}:

\documentclass{article}

\usepackage{listingsutf8}
\usepackage[spanish]{babel}

\begin{document}

\lstset{inputencoding=utf8/latin1}
\lstinputlisting[language=C++]{code.cpp}

\end{document}

• Thanks for your answer. With the second method the ó is not in its right place, but the first method works perfectly!. – kevinz Oct 5 '11 at 5:06
• You're right, I didn't notice the slight misalignment. I've removed the second method. – Jake Oct 5 '11 at 5:08
• the accpeted solution doesn´t work for me. – Mika Ike Jun 21 '14 at 9:44
• This doesn't seem to work with \usepackage{listings} \usepackage{listingsutf8} \usepackage[french]{babel} and \begin{lstlisting}[breaklines]. Although I'm not getting compilation errors, the french characters aren't displayed properly. – JoErNanO Nov 9 '15 at 10:18

The accepted solution didn't work for me, so here is mine:

\usepackage{listings} % ordinary listings package


and then configure letter mappings - these mappings are for the Czech languaguge but you can configure your own

\lstset{
literate=%
{á}{{\'a}}1
{í}{{\'i}}1
{é}{{\'e}}1
{ý}{{\'y}}1
{ú}{{\'u}}1
{ó}{{\'o}}1
{ě}{{\v{e}}}1
{š}{{\v{s}}}1
{č}{{\v{c}}}1
{ř}{{\v{r}}}1
{ž}{{\v{z}}}1
{ď}{{\v{d}}}1
{ť}{{\v{t}}}1
{ň}{{\v{n}}}1
{ů}{{\r{u}}}1
{Á}{{\'A}}1
{Í}{{\'I}}1
{É}{{\'E}}1
{Ý}{{\'Y}}1
{Ú}{{\'U}}1
{Ó}{{\'O}}1
{Ě}{{\v{E}}}1
{Š}{{\v{S}}}1
{Č}{{\v{C}}}1
{Ř}{{\v{R}}}1
{Ž}{{\v{Z}}}1
{Ď}{{\v{D}}}1
{Ť}{{\v{T}}}1
{Ň}{{\v{N}}}1
{Ů}{{\r{U}}}1
}

• Thnak you, I was in your case. The accepted solution doesn´t works for me, and your solutions has solved my problem in spanish. – Mika Ike Jun 21 '14 at 9:46

None of the above worked here, just this way:

\usepackage[T1]{fontenc}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}

\usepackage{listings}

\lstset{
language=bash,   %% PHP, C, Java, etc... bash is the standard
extendedchars=true,
inputencoding=latin1
}

• This last solution does not work if your source code is in utf-8 and you replace latin1 by utf8 ;-( – Tsf Jun 23 '17 at 13:47

In Brazilian portuguese, this solution worked for me

\usepackage{listings} % for including code

\lstset{
language=R,   % R code
literate=
{á}{{\'a}}1
{à}{{\a}}1
{ã}{{\~a}}1
{é}{{\'e}}1
{ê}{{\^e}}1
{í}{{\'i}}1
{ó}{{\'o}}1
{õ}{{\~o}}1
{ú}{{\'u}}1
{ü}{{\"u}}1
{ç}{{\c{c}}}1
}


Hungarian version based on previous answer:

\lstset{ literate={á}{{\'a}}1 {é}{{\'e}}1 {í}{{{\'\i}}}1 {ó}{{\'o}}1 {ö}{{\"o}}1 {ő}{{\H o}}1 {ú}{{\'u}}1 {Ú}{{\'U}}1 {ü}{{\"u}}1 {ű}{{\H u}}1 {Ü}{{\"U}}1 }


Set for Polish language:

\lstset{
literate=%
{ą}{{\k{a}}}1
{Ą}{{\k{A}}}1
{ć}{{\'c}}1
{Ć}{{\'{C}}}1
{ę}{{\k{e}}}1
{Ę}{{\k{E}}}1
{ł}{{\l{}}}1
{Ł}{{\L{}}}1
{ń}{{\'n}}1
{Ń}{{\'N}}1
{ó}{{\'o}}1
{Ó}{{\'O}}1
{ś}{{\'s}}1
{Ś}{{\'S}}1
{ż}{{\.z}}1
{Ż}{{\.Z}}1
{ź}{{\'z}}1
{Ź}{{\'Z}}1
}
`