diff --git a/guix-data-service/web/render.scm b/guix-data-service/web/render.scm index 081399a..744c66c 100644 --- a/guix-data-service/web/render.scm +++ b/guix-data-service/web/render.scm @@ -24,6 +24,7 @@ #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) #:use-module (ice-9 ftw) + #:use-module (ice-9 iconv) #:use-module (ice-9 binary-ports) #:use-module (web request) #:use-module (web response) @@ -142,30 +143,39 @@ (list (build-response #:code code #:headers (append extra-headers - '((content-type . (text/html)) + '((content-type . (text/html + (charset . "utf-8"))) (vary . (accept))))) - (lambda (port) - (sxml->html sxml port)))) + (call-with-encoded-output-string + "utf-8" + (lambda (port) + (sxml->html sxml port))))) (define* (render-json json #:key (extra-headers '()) (code 200)) (list (build-response #:code code #:headers (append extra-headers - '((content-type . (application/json)) + '((content-type . (application/json + (charset . "utf-8"))) (vary . (accept))))) - (lambda (port) - (scm->json json port)))) + (call-with-encoded-output-string + "utf-8" + (lambda (port) + (scm->json json port))))) (define* (render-text text #:key (extra-headers '()) (code 200)) (list (build-response #:code code #:headers (append extra-headers - '((content-type . (text/plain)) + '((content-type . (text/plain + (charset . "utf-8"))) (vary . (accept))))) - (lambda (port) - (display text port)))) + (call-with-encoded-output-string + "utf-8" + (lambda (port) + (display text port))))) (define (not-found uri) (list (build-response #:code 404)