doxygen: read sources as UTF-8 (was ISO-8859-1)

The doc sources (include/jwt.h doc comments, doxygen/mainpage.dox) are UTF-8, but
DOXYGEN_INPUT_ENCODING was ISO-8859-1, so doxygen decoded multi-byte UTF-8 (em
dashes, curly quotes, symbols) as Latin-1 and emitted mojibake in the generated
HTML. Set it to UTF-8 so non-ASCII renders correctly; update the CLAUDE.md note
accordingly (don't revert it).

Verified with a doxygen 1.15.0 A/B run on a UTF-8 em-dash: UTF-8 input yields the
correct U+2014 (e2 80 94) in the HTML, ISO-8859-1 yields the c3 a2 c2 80 c2 94
mojibake.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Ben Collins <bcollins@libjwt.io>
diff --git a/CLAUDE.md b/CLAUDE.md
index b7a0855..993abde 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -70,17 +70,13 @@
 # Docs are built automatically if Doxygen is found
 ```
 
-**Doc encoding: keep doxygen-rendered docs ASCII-only.** Doxygen processes
-`include/jwt.h` (public-header doc comments) and `doxygen/mainpage.dox` with
-`DOXYGEN_INPUT_ENCODING = ISO-8859-1` (`cmake/LibJWTDoxyfile.cmake`), but the
-sources are UTF-8, so any non-ASCII byte in those files renders as mojibake in
-the generated HTML (a UTF-8 em-dash, U+2014, shows up as an `a`-prefixed
-box-character blob). Use ASCII in them: a plain `-` instead of an em-dash,
-straight quotes instead of curly, `>=`/`->` instead of the symbols, and doxygen
-`\emoji`/HTML entities for any symbol you need. Plain markdown (`README.md`,
-files under `.github/`) is GitHub-rendered and unaffected, but keep it ASCII too
-for consistency. (Setting the encoding to UTF-8 would also fix it; the project
-keeps docs ASCII instead.)
+**Doc encoding.** Doxygen processes `include/jwt.h` (public-header doc comments)
+and `doxygen/mainpage.dox`. `DOXYGEN_INPUT_ENCODING` in
+`cmake/LibJWTDoxyfile.cmake` is **UTF-8** to match the UTF-8 sources, so
+non-ASCII (em-dashes, curly quotes, symbols) renders correctly in the generated
+HTML. It was previously `ISO-8859-1`, which decoded the UTF-8 bytes as Latin-1
+and produced mojibake (a UTF-8 em-dash showed up as an `a`-prefixed
+box-character blob); do not revert it.
 
 ## Key CMake Options
 
diff --git a/cmake/LibJWTDoxyfile.cmake b/cmake/LibJWTDoxyfile.cmake
index c9569fc..902572e 100644
--- a/cmake/LibJWTDoxyfile.cmake
+++ b/cmake/LibJWTDoxyfile.cmake
@@ -3,7 +3,9 @@
 set(DOXYGEN_MARKDOWN_ID_STYLE "GITHUB")
 set(DOXYGEN_PROJECT_LOGO "images/LibJWT.svg")
 set(DOXYGEN_PROJECT_ICON "images/favicon.ico")
-set(DOXYGEN_INPUT_ENCODING "ISO-8859-1")
+# Sources are UTF-8; decoding them as ISO-8859-1 turned any non-ASCII byte
+# (em-dashes, curly quotes, etc.) into mojibake in the generated HTML.
+set(DOXYGEN_INPUT_ENCODING "UTF-8")
 set(DOXYGEN_STRIP_FROM_PATH ${CMAKE_SOURCE_DIR})
 set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C "YES")
 set(DOXYGEN_TYPEDEF_HIDES_STRUCT "YES")