A good answer would start by explaining the problem in one's own words, then selectively quote the parts which are relevant. In the ncurses FAQ section presented by @Craig, there is an aspect not detailed which helps understand the question.
Referring to the Line Graphics section of the terminfo(5) manual page, and the corresponding Line Graphics section of the curs_add(3x) manual page, the curses library has a predefined set of symbolic constants named ACS_xxxx which are drawn using similar escape sequences on various terminals.
The most common variant is based on VT100, where an application sends a special character (or escape sequence) to start the line-graphics mode and another character (or escape sequence) to end the line-graphics.
A few developers of terminal emulators objected to the notion of modes when writing text in UTF-8 mode. Never mind the irony (there are escape sequences for starting/stopping UTF-8 encoding), but ncurses has this feature to support—efficiently. To help it decide how to do line-graphics,
- it starts with the terminal description (identified by an environment variable), which can tell only how to do VT100-style line-graphics.
- For UTF-8, it can check the locale encoding by checking other environment variables.
If ncurses must use only UTF-8 (because the terminal does not support VT100 line graphics), it uses a built-in table of good-enough Unicode values. Drawing lines with UTF-8 is inevitably three times slower than using VT100 line-drawing, simply because three times as many characters are sent to the terminal.
All of this makes UTF-8 line-drawing an "also", not the primary focus of the library. In OP's case, something (probably locale variables) was not correct. Fedora initialized the console in UTF-8 mode, and Linux console being a well-known case which omitted VT100 line-drawing, OP got odd characters on the screen.
Since ncurses interpreted the OP's environment as supporting the capabilities in the terminal description, it switched to VT100 line-drawing mode (ignored by the console because of an overriding mode), and drew characters that it expected to map into lines. So it may have appeared on the screen like this:
x Hello world x
│ Hello world │