https://bugs.kde.org/show_bug.cgi?id=524798

--- Comment #3 from kart <[email protected]> ---
> 
> Четверг, 27 августа 2026, 19:03 +03:00 от Urs Fleisch 
> <[email protected]
> >:
> https://bugs.kde.org/show_bug.cgi?id=524798
> 
> --- Comment #2 from Urs Fleisch <[email protected]> ---
> Are you sure that Kid3 is the problem and not AIMP?
> 
> Here's how Gemini views the matter:
> 
> It is very likely that AIMP is misinterpreting the ID3v2 metadata rather
> than
> Kid3 corrupting it.
> Here is an analysis of why this occurs and why AIMP is the probable
> culprit:
> 
> ---
> 
> ### 1. What the "B" Character Control Artifact Usually Means
> 
> In ID3v2 tags (both v2.3 and v2.4), text fields begin with an **Encoding
> Byte**
> (a single byte prefix before the actual string data) that tells parsers
> how to
> decode the character string:
> 
> * `0x00`: ISO-8859-1 (Latin-1)
> * `0x01`: UTF-16 with BOM (Byte Order Mark)
> * `0x02`: UTF-16BE without BOM
> * `0x03`: UTF-8 (valid in ID3v2.4)
> 
> When text is written in **UTF-16 with BOM**, the string starts with two
> bytes:
> `0xFE 0xFF` (Big-Endian) or `0xFF 0xFE` (Little-Endian).
> 
> If a player fails to recognize UTF-16 encoding correctly—or mishandles the
> 
> encoding descriptor byte/BOM when reading ID3v2.3 tags—it will treat the
> BOM
> bytes as raw ASCII/Latin-1 text.
> 
> * In ASCII/Latin-1 or certain Windows codepages (like Windows-1251), byte
> values around `0xFE`/`0xFF` or raw UTF-16 representation can render as
> weird
> glyphs or **control/garbage characters** (often looking like `B`, `þÿ`, or
> 
> `ÿþ`).
> 
> ### 2. ID3v2 Spec Compliance: Kid3 vs. AIMP
> 
> * **Kid3** uses well-established tag libraries (`TagLib` or its internal
> ID3
> parser) that strictly comply with the ID3v2 specification. Kid3 correctly
> writes the encoding byte prefix and UTF-16 BOM when saving tags in ID3v2.3
> mode
> (which requires UTF-16 for Unicode).
> * **AIMP** historically relies on its own custom ID3 parser. Older
> versions or
> specific configurations of AIMP are known to have bugs where they
> incorrectly
> strip or misinterpret the leading encoding byte/BOM on certain frames
> (like
> `TIT2`, `TPE1`, or custom `TXXX` frames), treating the metadata as plain
> Latin-1 instead of UTF-16.
> 
> ### 3. How to Verify
> 
> To confirm whether Kid3 wrote standard tags or if AIMP is at fault:
> 
> 1. **Check with `ffprobe` / `id3v2` / `TagLib` CLI tools:**
> Inspect the raw tag structure of a processed file using a third
> command-line
> tool:
> ```bash
> ffprobe -show_format -print_format json "your_file.mp3"
> 
> ```
> 
> 
> If command-line tools, VLC, or MPV display the text cleanly without any
> "B"
> character, Kid3 wrote standard-compliant ID3v2 tags.
> 2. **Test ID3v2.3 Text Encoding Settings in Kid3:**
> In Kid3, go to **Settings → Configure Kid3 → Tags → ID3v2** and check the
> default text encoding:
> * ID3v2.3 technically only supports ISO-8859-1 and UTF-16.
> * If AIMP struggles with UTF-16 in ID3v2.3, changing Kid3's write encoding
> 
> setting or saving as **ID3v2.4 with UTF-8** will often bypass AIMP's
> UTF-16 BOM
> parser bug.
> 
> ---
> 
> ### Conclusion
> 
> Kid3 is adhering to ID3 specifications. The issue stems from **AIMP's ID3
> parser misreading the UTF-16 BOM/encoding header byte** as part of the
> string
> payload.
> 
> --
> You are receiving this mail because:
> You reported the bug.
> 

ffprobe -show_format -print_format json '/home/kartaven
ko/Загрузки/113 -  Sure Thing.mp3'
ffprobe version 7.1.5 Copyright (c) 2007-2026 the FFmpeg developers
built with gcc 14.3.0 (GCC) 20250523 (ROSA)
configuration: --prefix=/usr --enable-shared --libdir=/usr/lib64
--shlibdir=/usr/lib64 --incdi
r=/usr/include --disable-stripping --enable-chromaprint --enable-libaom
--enable-postproc --enab
le-gpl --enable-pthreads --enable-ladspa --enable-libbluray --enable-libtheora
--enable-libvorbi
s --disable-encoder=vorbis --enable-libvpx --enable-libxcb --enable-libxcb-shm
--enable-libxcb-x
fixes --enable-libxcb-shape --enable-runtime-cpudetect --enable-libfdk-aac
--enable-libdc1394 --
enable-librtmp --enable-libspeex --enable-libfreetype --enable-libgsm
--enable-libcelt --enable-
version3 --enable-nonfree --enable-opencl --enable-nvdec --enable-nvenc
--disable-libopencv --en
able-libopenjpeg --enable-libopus --enable-libsoxr --disable-libxavs
--enable-libmodplug --enabl
e-libmp3lame --enable-libass --enable-gnutls --enable-libcdio --enable-libpulse
--enable-libv4l2
--enable-libvpl --enable-frei0r --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-
version3 --enable-libx264 --enable-libx265 --enable-libvo-amrwbenc
--enable-libxvid --enable-ope
ngl --enable-vulkan --disable-libglslang --enable-libshaderc
--enable-libsmbclient
libavutil      59. 39.100 / 59. 39.100
libavcodec     61. 19.101 / 61. 19.101
libavformat    61.  7.103 / 61.  7.103
libavdevice    61.  3.100 / 61.  3.100
libavfilter    10.  5.100 / 10.  5.100
libswscale      8.  3.100 /  8.  3.100
libswresample   5.  3.100 /  5.  3.100
libpostproc    58.  3.100 / 58.  3.100
{
Unknown encoding
Last message repeated 5 times
Input #0, mp3, from '/home/kartavenko/Загрузки/113 -  Sure Thing.mp3':
Duration: 00:02:39.71, start: 0.025057, bitrate: 320 kb/s
Stream #0:0: Audio: mp3 (mp3float), 44100 Hz, stereo, fltp, 320 kb/s
"format": {
"filename": "/home/kartavenko/Загрузки/113 -  Sure Thing.mp3",
"nb_streams": 1,
"nb_programs": 0,
"nb_stream_groups": 0,
"format_name": "mp3",
"format_long_name": "MP2/3 (MPEG audio layer 2/3)",
"start_time": "0.025057",
"duration": "159.712653",
"size": "6390636",
"bit_rate": "320106",
"probe_score": 51

VLC doesn’t launch with such a file from the command line, but the tags are
displayed correctly in graphical mode. Also, the tags aren’t displayed in
easytag and mp3tag. I’ll add that the problem occurs when overwriting existing
tags in kid3. If you first delete the tags and then re‑enter them, the error
doesn’t occur, and the tags are displayed correctly in all programs. I noticed
the error recently, as I’ve been using kid3 for a long time and haven’t had any
problems.

--

Hallow! Here 's what it gives out

Илья Картавенко
Отправлено из Почты Mail ( https://trk.mail.ru/c/zzm979 )

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to