---
) or with macros (like \"uber
). For TeX a character is 1 byte. However, unicode characters are multibyte characters and as a consequence TeX does not see one but usually to characters and typesets whatever characters might be represented by the binary value of the character. inputenc now uses this fact to fool the user into thinking that TeX would be using unicode. What it does is making the first of the characters that are represented by the binary value of the unicode char active (i.e. it acts as a macro) and let's it expand into the corresponding LICR (LaTeX Internal Character Representation) depending on the following characters that were part of the binary value.The emdash of your example would silently have disappeared in the output if you hadn't used it in the bibliography but in the running text. Why things were going wrong when it appeared in the bibliography I don't know.
The original sample file would run without errors with XeLaTeX, for example, as its underlying engine xetex can read unicode input. One would need to add the fontspec package then, to actually get the emdash typeset, though.
Regards