ODB++ export: Non-ASCII characters cause ambiguous designators
Description
KiCad replaces non-ASCII characters in designators during ODB++ export with an underscore (_).
If designators differ only by the non-ASCII character, they collapse into the same name in the export.
Example:
-
Ü1,Ä1,Ö1→ all become_1.
This causes two issues:
- Loss of uniqueness: different components in the schematic/PCB share the same designator in ODB++.
-
Loss of traceability: it is impossible to map the normalized
_1back to the original designator.
Expected behavior:
- Either a deterministic ASCII transliteration should be applied (e.g.
Ü → U,Ä → A,Ö → O) to preserve uniqueness,
or - Non-ASCII characters should be disallowed/rejected at the point of definition, with a clear warning/error message.
Steps to reproduce
- Create a project with components using non-ASCII characters in their designators that differ only by the non-ASCII character (e.g.
Ü1,Ä1,Ö1). - Export ODB++.
- Open corresponding component layer, e.g. \steps\pcb\layers\comp_+_top\components
- Compare designators in CMP entries
Result: The components are exported with identical designator _1.
Expected: Each component keeps a unique ASCII representation of its designator, or the design is rejected with an explicit error.
KiCad Version
Application: KiCad PCB Editor x64 on x64
Version: 9.0.4, release build
Libraries:
wxWidgets 3.2.8
FreeType 2.13.3
HarfBuzz 10.2.0
FontConfig 2.15.0
libcurl/8.13.0-DEV Schannel zlib/1.3.1
Platform: Windows 11 (Erzeugungsversion 26100), 64-bit Edition, 64 bit, Little endian, wxMSW
OpenGL: ATI Technologies Inc., AMD Radeon(TM) Graphics, 4.6.14802 Compatibility Profile Context 21.40.64.06 30.0.14064.6002
Build Info:
Date: Aug 18 2025 00:41:45
wxWidgets: 3.2.8 (wchar_t,wx containers)
Boost: 1.88.0
OCC: 7.9.1
Curl: 8.13.0-DEV
ngspice: 44
Compiler: Visual C++ 1942 without C++ ABI
KICAD_IPC_API=ON
Locale:
Lang: de_DE
Enc: UTF-8
Num: 1.234,5
Encoded кΩ丈: D0BACEA9E4B888 (sys), D0BACEA9E4B888 (utf8)
Edited by Manuel Wassenberg