<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 27, 2022 at 10:09 AM Ulrich Windl <<a href="mailto:Ulrich.Windl@rz.uni-regensburg.de">Ulrich.Windl@rz.uni-regensburg.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi!<br>
<br>
Having written an RFC 3164 compatible syslog daemon, I noticed that systemd<br>
created syslog messages with non-ASCII characters.<br>
The problem is that a remote syslogd can hardly guess the correct character<br>
set (I'm using rsyslog to forward local messages to a remote server).<br>
<br>
Example of such message:<br>
systemd-tmpfiles[3311]: [/usr/lib/tmpfiles.d/svnserve.conf:1] Line references<br>
path below legacy directory /var/run/, updating /var/run/svnserve →<br>
/run/svnserve; please update the tmpfiles.d/ drop-in file accordingly.<br>
<br>
(The arrow is encoded as three bytes (\xe2\x86\x92))<br>
<br>
RFC 5425 syslog messages require the use of a BOM (%<a href="http://xEF.BB.BF" rel="noreferrer" target="_blank">xEF.BB.BF</a>) at the<br>
beginning of a message if the message used UTF-8:<br>
<br>
      MSG             = MSG-ANY / MSG-UTF8<br>
      MSG-ANY         = *OCTET ; not starting with BOM<br>
      MSG-UTF8        = BOM UTF-8-STRING<br>
      BOM             = %<a href="http://xEF.BB.BF" rel="noreferrer" target="_blank">xEF.BB.BF</a><br>
<br>
Wouldn't it make sense to add such a BOM for RFC 3164 syslog messages also if<br>
non-ASCII (i.e.: UTF-8) encoded characters are used?<br></blockquote><div><br></div><div></div><div>RFC 3164 over a local socket from journald to local rsyslogd? The local rsyslogd already knows if messages are UTF-8 because the system's $LANG (well, nl_langinfo) says so. And if rsyslog can't trust that for some reason (e.g. because a user might have a different locale), then systemd-journald won't be able to trust it either, so it won't know whether it could add the BOM.<br></div><div><br></div><div>RFC 3164 over the network to a remote server? Outside the scope for systemd, since it doesn't generate the network packets; your local rsyslogd forwarder does. (Also, why RFC 3164 and not 5425?)</div><div><br></div><div>Generally, if a message successfully decodes as UTF-8 then it's most likely actual UTF-8 (and if UTF-8 decode fails then you fall back to ISO8859-1). Various old systems get away with this without needing a UTF-8 BOM.<br></div></div><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">Mantas Mikulėnas</div></div></div>