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")