PyPI / charset-normalizer / 3.5.2

charset-normalizer 3.5.2

Source
https://github.com/jawah/charset_normalizer
Tag scanned
3.5.2
Compared with
3.5.1 (0 signals introduced since)
Files
74 scanned, 11 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 99 info
Scan time
30.9 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 36 of 36 warn and critical signals; 36 demoted to info.
Disclude version
4.0.0
Scanned (UTC)
2026-10-14 18:09

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info warn → info by review long-line README.md:58:1

    line length 2368 characters (raw pass, confidence 0.65)

    [^2]: Chardet 7 replaced the historical LGPL-licensed implementation with an AI-assisted rewrite, initially distributed under MIT and later under 0BSD. The original author [contests](https://github.com/chardet/chardet/issues/327) that the rewrite was sufficiently independent to permit relicensing, while Chardet's maint
    dismissed LLM, confidence 0.95 A long markdown footnote line about the Chardet library's relicensing history.
    Reasoning

    A very long line in a markdown footnote is a formatting issue. The text is ordinary prose about a library's licensing history, with no code or encoded payload.

  2. info unicode-invisible bin/bc.py:91:19

    U+FE0F VARIATION SELECTOR-16 (invisible payload carrier) in source (in string/comment) (raw pass, confidence 0.54)

                print(
                    f"⟨U+FE0F⟩✅ ⟨U+FE0F⟩'{tbt_path}' (got '{charset_normalizer_encoding}' but "
                    f"eq {chardet_encoding} WITH {round(calc_eq * 100.0, 3)} %)"
                )
  3. info unicode-invisible bin/bc.py:91:26

    U+FE0F VARIATION SELECTOR-16 (invisible payload carrier) in source (in string/comment) (raw pass, confidence 0.54)

                print(
                    f"⟨U+FE0F⟩✅ ⟨U+FE0F⟩'{tbt_path}' (got '{charset_normalizer_encoding}' but "
                    f"eq {chardet_encoding} WITH {round(calc_eq * 100.0, 3)} %)"
                )
  4. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:2:4

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (raw pass, confidence 0.70)

    1. Bсеки човек има право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование. Hачалното образование трябва да бъде зад
    likely benign LLM, confidence 0.80 Mixed Latin and Cyrillic characters in a Bulgarian text sample.
    Reasoning

    This is a Bulgarian prose sample in a data directory, not code. The Latin 'c' and 'e' among Cyrillic letters are likely stray or deliberate test characters rather than an identifier being spoofed. No execution or concealment is involved.

  5. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:2:4

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    1. Bсеки човек има право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование. Hачалното образование трябва да бъде зад
    likely benign LLM, confidence 0.80 Latin and Cyrillic mixed in a Bulgarian prose sample.
    Reasoning

    Same sample text as the homoglyph finding. Mixing scripts in running prose is an artifact of the sample, not a spoofed identifier in code.

  6. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:2:72

    identifier `Oбразованието` contains homoglyph candidates: р (0440)→p, а (0430)→a, о (043E)→o, а (0430)→a (raw pass, confidence 0.70)

    право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование. Hачалното образование трябва да бъде задължително. Tехнич
    likely benign LLM, confidence 0.80 Latin letters mixed into a Cyrillic word in a Bulgarian text sample.
    Reasoning

    The flagged word is in a Bulgarian prose sample. Latin 'O' and 'p', 'a', 'o' mixed with Cyrillic look like a copy or typing artifact. It is data, not an identifier used by a program.

  7. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:2:72

    identifier `Oбразованието` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование. Hачалното образование трябва да бъде задължително. Tехнич
    likely benign LLM, confidence 0.80 Latin and Cyrillic mixed in a Bulgarian prose word.
    Reasoning

    Same prose sample; the mixed-script signal reflects the text's character set, not a code identifier.

  8. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:2:247

    identifier `Hачалното` contains homoglyph candidates: а (0430)→a, а (0430)→a, о (043E)→o, о (043E)→o (raw pass, confidence 0.70)

    �новното образование. Hачалното образование трябва да бъде задължително. Tехническото и професионалното образование трябва да бъдат общодостъпни, а висшето образование тря… (340 bytes total)
    likely benign LLM, confidence 0.80 Mixed-script capitalized word in a Bulgarian text sample.
    Reasoning

    A capitalized Bulgarian word in a text fixture contains Latin 'H' and Cyrillic letters. This looks like a data sample with inconsistent characters, not an obfuscated program.

  9. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:2:247

    identifier `Hачалното` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    �новното образование. Hачалното образование трябва да бъде задължително. Tехническото и професионалното образование трябва да бъдат общодостъпни, а висшето образование тря… (340 bytes total)
    likely benign LLM, confidence 0.80 Latin and Cyrillic mixed in a Bulgarian prose word.
    Reasoning

    Same prose sample; the mixed-script flag is a property of the text content, not a code construct.

  10. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:2:341

    identifier `Tехническото` contains homoglyph candidates: е (0435)→e, х (0445)→x, е (0435)→e, с (0441)→c (raw pass, confidence 0.70)

    да бъде задължително. Tехническото и професионалното образование трябва да бъдат общодостъпни, а висшето образование трябва да бъде еднакво достъпно за всички на основата на
    likely benign LLM, confidence 0.80 Latin 'T' mixed into a Cyrillic word in a Bulgarian text sample.
    Reasoning

    A Bulgarian prose sample with a Latin 'T' before Cyrillic letters. The text is not code, and nothing executes or resolves the identifier.

  11. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:2:341

    identifier `Tехническото` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    да бъде задължително. Tехническото и професионалното образование трябва да бъдат общодостъпни, а висшето образование трябва да бъде еднакво достъпно за всички на основата на
    likely benign LLM, confidence 0.80 Latin and Cyrillic mixed in a Bulgarian prose word.
    Reasoning

    Same prose sample; mixed scripts in running text are not a code-level spoofing signal.

  12. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:3:4

    identifier `Oбразованието` contains homoglyph candidates: р (0440)→p, а (0430)→a, о (043E)→o, а (0430)→a (raw pass, confidence 0.70)

    2. Oбразованието трябва да бъде насочено към цялостно развитие на човешката личност и заcилване на уважението към правата на човека и основните свободи. Tо трябва да съдейства … (340 bytes total)
    likely benign LLM, confidence 0.85 Bulgarian prose word 'Oбразованието' with Latin 'O' and Cyrillic letters mixed together.
    Reasoning

    The flagged identifier is ordinary Bulgarian prose in a plain text sample file, not code. The Latin letters mixed into Cyrillic words look like typing or copy-paste slips, and nothing in the file executes or is hidden.

  13. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:3:4

    identifier `Oбразованието` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    2. Oбразованието трябва да бъде насочено към цялостно развитие на човешката личност и заcилване на уважението към правата на човека и основните свободи. Tо трябва да съдейства … (340 bytes total)
    likely benign LLM, confidence 0.85 The same Bulgarian word, flagged for mixing Latin and Cyrillic characters.
    Reasoning

    The mixed-script flag is the same stray-Latin-letter pattern in a text data file. It carries no execution or obfuscation risk and is most likely a keyboard or copy-paste artifact.

  14. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:3:157

    identifier `заcилване` contains homoglyph candidates: а (0430)→a, а (0430)→a, е (0435)→e (raw pass, confidence 0.70)

    а човешката личност и заcилване на уважението към правата на човека и основните свободи. Tо трябва да съдейства за разбирателството, тъпримостта и приятелството между всички … (340 bytes total)
    likely benign LLM, confidence 0.85 Bulgarian word 'заcилване' with a stray Latin 'c' among Cyrillic letters.
    Reasoning

    This is ordinary Bulgarian text in a data file. The Latin 'c' inside 'заcилване' is a typing artifact and is not used to evade any code analysis.

  15. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:3:157

    identifier `заcилване` mixes scripts: Cyrillic + Latin (raw pass, confidence 0.80)

    а човешката личност и заcилване на уважението към правата на човека и основните свободи. Tо трябва да съдейства за разбирателството, тъпримостта и приятелството между всички … (340 bytes total)
    likely benign LLM, confidence 0.85 The same word 'заcилване', flagged for mixed Latin and Cyrillic.
    Reasoning

    The mixed-script flag repeats the stray-letter pattern in a text file. There is no code path that could be exploited.

  16. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:3:279

    identifier `Tо` contains homoglyph candidates: о (043E)→o (raw pass, confidence 0.70)

    � и основните свободи. Tо трябва да съдейства за разбирателството, тъпримостта и приятелството между всички народи, расови или религиозни групи, както и за осъществяване дейн… (341 bytes total)
    likely benign LLM, confidence 0.85 The Bulgarian sentence fragment 'Tо' mixing Latin T with Cyrillic о.
    Reasoning

    The 'Tо' pair is a Latin 'T' followed by a Cyrillic 'о' in running prose. This is a common typing slip in bilingual text, and the file is data rather than code.

  17. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:3:279

    identifier `Tо` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    � и основните свободи. Tо трябва да съдейства за разбирателството, тъпримостта и приятелството между всички народи, расови или религиозни групи, както и за осъществяване дейн… (341 bytes total)
    likely benign LLM, confidence 0.85 The same 'Tо' fragment, flagged for mixing Latin and Cyrillic.
    Reasoning

    The mixed-script flag is the same single-word slip in a non-code text file, with no risk attached.

  18. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:3:573

    identifier `Oрганизацията` contains homoglyph candidates: р (0440)→p, а (0430)→a, а (0430)→a, а (0430)→a (raw pass, confidence 0.70)

    �твяване дейността на Oрганизацията на Oбединените нации за поддържане на мира.⟨U+000D⟩
    likely benign LLM, confidence 0.85 Bulgarian word 'Oрганизацията' with a Latin 'O' among Cyrillic letters.
    Reasoning

    'Oрганизацията' is a normal Bulgarian word ('Организацията') with a Latin 'O' typed in place of the Cyrillic letter. The file is prose, not code, so there is no evasion or execution concern.

  19. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:3:573

    identifier `Oрганизацията` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    �твяване дейността на Oрганизацията на Oбединените нации за поддържане на мира.⟨U+000D⟩
    likely benign LLM, confidence 0.85 The same word 'Oрганизацията', flagged for mixed Latin and Cyrillic.
    Reasoning

    The mixed-script flag repeats the same stray-letter pattern in a text data file.

  20. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:3:604

    identifier `Oбединените` contains homoglyph candidates: е (0435)→e, е (0435)→e, е (0435)→e (raw pass, confidence 0.70)

    �а на Oрганизацията на Oбединените нации за поддържане на мира.⟨U+000D⟩
    likely benign LLM, confidence 0.85 Bulgarian word 'Oбединените' with a Latin 'O' and Latin-like 'e' among Cyrillic letters.
    Reasoning

    'Oбединените' is a normal Bulgarian word with a Latin 'O' in place of Cyrillic. The Latin 'e' homoglyphs are also typing artifacts in a text file with no code context.

  21. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:3:604

    identifier `Oбединените` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    �а на Oрганизацията на Oбединените нации за поддържане на мира.⟨U+000D⟩
    likely benign LLM, confidence 0.85 The same word 'Oбединените', flagged for mixed Latin and Cyrillic.
    Reasoning

    The mixed-script flag is the same pattern in a prose data file, with no execution or identifier-spoofing context.

  22. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:4:4

    identifier `Pодителите` contains homoglyph candidates: о (043E)→o, е (0435)→e, е (0435)→e (raw pass, confidence 0.70)

    3. Pодителите имат право, с приоритет, да избират вида образование, което да получат техните деца.⟨U+000D⟩
    Член 27
    likely benign LLM, confidence 0.75 A Bulgarian text sample contains a Latin P among Cyrillic letters in the word Pодителите.
    Reasoning

    The flagged word is ordinary Bulgarian prose inside a sample data file, and the 'identifier' label does not fit running text. The Cyrillic-looking Latin letter is most likely a typo or a deliberate encoding fixture, not a payload.

  23. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:4:4

    identifier `Pодителите` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    3. Pодителите имат право, с приоритет, да избират вида образование, което да получат техните деца.⟨U+000D⟩
    Член 27
    likely benign LLM, confidence 0.75 The same Pодителите word mixes Latin and Cyrillic letters in a Bulgarian text sample.
    Reasoning

    The mixed-script signal repeats the same Latin/Cyrillic mix in natural-language prose. It is a text-data artifact, not code that executes or hides an identifier.

  24. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:6:4

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (raw pass, confidence 0.70)

    1. Bсеки човек има право свободно да участва в културния живот на обществото, да се наслаждава на изкуствата, да участва в научния напредък и да се ползва от неговите достижения
    likely benign LLM, confidence 0.75 A Bulgarian sample line starts with the word Bсеки, which mixes a Latin B with Cyrillic letters.
    Reasoning

    The word Bсеки is a Bulgarian prose word with a Latin B, in a sample text file. It reads as a typo or test fixture, and no execution or concealment is involved.

  25. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:6:4

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    1. Bсеки човек има право свободно да участва в културния живот на обществото, да се наслаждава на изкуствата, да участва в научния напредък и да се ползва от неговите достижения
    likely benign LLM, confidence 0.75 The word Bсеки mixes Latin and Cyrillic scripts in a Bulgarian text sample.
    Reasoning

    This repeats the Latin/Cyrillic mix from the same prose line. It is a text artifact with no code-level risk.

  26. info warn → info by review unicode-homoglyph data/sample-bulgarian.txt:7:4

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (raw pass, confidence 0.70)

    2. Bсеки човек има право на закрила на моралните и материалните си интереси, които са резултат от каквото и да е научно, литературно или художествено произведение, на което той … (340 bytes total)
    likely benign LLM, confidence 0.75 Another Bulgarian sample line begins with Bсеки, mixing a Latin B with Cyrillic letters.
    Reasoning

    Same prose word Bсеки in another line of a Bulgarian sample text. The pattern is a typo or fixture artifact, not a concealed identifier.

  27. info warn → info by review unicode-mixed-script data/sample-bulgarian.txt:7:4

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    2. Bсеки човек има право на закрила на моралните и материалните си интереси, които са резултат от каквото и да е научно, литературно или художествено произведение, на което той … (340 bytes total)
    likely benign LLM, confidence 0.75 The word Bсеки in a Bulgarian sample line mixes Latin and Cyrillic scripts.
    Reasoning

    The mixed-script signal restates the same prose-level homoglyph in a text fixture.

  28. line length 569 characters (raw pass, confidence 0.50)

    � �������� �������� �� ������� ������ ������� 12 ������������ ��������, ������ ���� ������ ��� ���� �����. �������� ����… (339 bytes total)
  29. info long-line data/sample-greek.txt:1:1

    line length 569 characters (raw pass, confidence 0.50)

    � �������� �������� �� ������� ������ ������� 12 ������������ ��������, ������ ���� ������ ��� ���� �����. �������� ����… (339 bytes total)
  30. info warn → info by review unicode-zero-width data/sample-polish.txt:2:2

    U+FEFF ZERO WIDTH NO-BREAK SPACE (BOM) in source (raw pass, confidence 0.75)

    "source";"target"⟨U+000D⟩
    "⟨U+FEFF⟩REF.-2";"POLISH"⟨U+000D⟩
    "KW-P00-01";"SYSTEM VIDEODOMOFONOWY MEET"⟨U+000D⟩
    "KW-P00-02";"URZĄDZENIE"
    likely benign LLM, confidence 0.90 A Polish CSV file begins with a zero-width no-break space (BOM) before its first field.
    Reasoning

    A UTF-8 byte order mark at the start of a CSV export is a common artifact from spreadsheet tools. It is harmless and not an obfuscation technique.

  31. line length 503 characters (raw pass, confidence 0.50)

    ������ 1895 �. ������� �������� ������ � ���������, ����� ����� ������������� �������� � ������ ����������� ������� (�����… (341 bytes total)
  32. info warn → info by review unicode-homoglyph docs/user/advanced_search.rst:11:20

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (raw pass, confidence 0.70)

    
        my_byte_str = 'Bсеки човек има право на образование.'.encode('cp1251')
    
        results = from_bytes(
    likely benign LLM, confidence 0.70 A reST doc example contains a Bulgarian string literal where the first letter is Latin B mixed with Cyrillic.
    Reasoning

    This is a documentation example. The Latin B in a Bulgarian string literal is a probable typo or deliberate test sample for encoding detection, not code that runs a payload. The 'identifier' label is wrong because the text sits inside a string.

  33. info warn → info by review unicode-mixed-script docs/user/advanced_search.rst:11:20

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    
        my_byte_str = 'Bсеки човек има право на образование.'.encode('cp1251')
    
        results = from_bytes(
    likely benign LLM, confidence 0.70 The Bulgarian string literal in the docs mixes Latin and Cyrillic characters.
    Reasoning

    The mixed-script signal repeats the same string-literal homoglyph in a documentation example, with no executable risk.

  34. info warn → info by review unicode-homoglyph docs/user/handling_result.rst:9:20

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (raw pass, confidence 0.70)

    
        my_byte_str = 'Bсеки човек има право на образование.'.encode('cp1251')
    
        # Assign return value so we can fully exploit result
    likely benign LLM, confidence 0.70 A reST doc example includes a Bulgarian byte string whose first word mixes Latin B with Cyrillic.
    Reasoning

    The same Bulgarian encoding example appears in another documentation page. It is a sample string for cp1251 handling, and the mixed letter looks like a sample-data artifact.

  35. info warn → info by review unicode-mixed-script docs/user/handling_result.rst:9:20

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    
        my_byte_str = 'Bсеки човек има право на образование.'.encode('cp1251')
    
        # Assign return value so we can fully exploit result
    likely benign LLM, confidence 0.70 The Bulgarian string in the handling_result docs mixes Latin and Cyrillic scripts.
    Reasoning

    This restates the mixed-script signal for the same documentation string literal. It is not evidence of malicious intent.

  36. info warn → info by review unicode-homoglyph docs/user/miscellaneous.rst:12:20

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (raw pass, confidence 0.70)

    
        my_byte_str = 'Bсеки човек има право на образование.'.encode('cp1251')
    
        # Assign return value so we can fully exploit result
    likely benign LLM, confidence 0.90 Rst doc example encoding a Cyrillic sentence to cp1251 bytes.
    Reasoning

    The file is documentation (rst) showing a Python example of encoding a Cyrillic Bulgarian sentence with cp1251. The Cyrillic letters inside a string literal are legitimate content; the identifier-homoglyph framing is a misreading since the text is actually a string value, and the example is a documentation illustration of multi-script text.

  37. info warn → info by review unicode-mixed-script docs/user/miscellaneous.rst:12:20

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    
        my_byte_str = 'Bсеки човек има право на образование.'.encode('cp1251')
    
        # Assign return value so we can fully exploit result
    likely benign LLM, confidence 0.85 Mixed-script Cyrillic text inside a documentation string literal.
    Reasoning

    Mixed Latin/Cyrillic appears inside a string literal in a documentation example about cp1251 encoding, not in a real identifier that could shadow code. The Cyrillic text is intentional localized sample content.

  38. info warn → info by review unicode-homoglyph docs/user/miscellaneous.rst:19:26

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (raw pass, confidence 0.70)

    
        # This should print 'Bсеки човек има право на образование.'
        print(str(result))
    likely benign LLM, confidence 0.85 Doc comment and print statement containing Cyrillic sample text.
    Reasoning

    Same snippet pattern: a comment and print of a Cyrillic sample string in a doc example. No executable obfuscation; the flagged token is string/comment content.

  39. info warn → info by review unicode-mixed-script docs/user/miscellaneous.rst:19:26

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (raw pass, confidence 0.80)

    
        # This should print 'Bсеки човек има право на образование.'
        print(str(result))
    likely benign LLM, confidence 0.85 Mixed-script match within doc comment/string sample.
    Reasoning

    Mixed-script match is again within a string/comment of a documentation example, not a real identifier spoofing risk.

  40. info warn → info by review unicode-homoglyph docs/user/new_encoding.rst:40:40

    identifier `А` contains homoglyph candidates: А (0410)→A (raw pass, confidence 0.70)

        # Example: remap bytes 0x80-0x83 to specific characters
        DECODING_TABLE[0x80] = "\u0410"  # А (Cyrillic)
        DECODING_TABLE[0x81] = "\u0411"  # Б
        DECODING_TABLE[0x82] = "\u0412"  # В
    likely benign LLM, confidence 0.85 Documentation example mapping bytes to Cyrillic characters in a decoding table.
    Reasoning

    The doc explains a custom decoding table mapping byte values to Cyrillic characters via explicit \u escapes with comments naming the letters. This is a documented encoding example, the Cyrillic is in a string value, and the flagged 'identifier' is a misparse of a string literal.

  41. info warn → info by review unicode-homoglyph docs/user/new_encoding.rst:42:40

    identifier `В` contains homoglyph candidates: В (0412)→B (raw pass, confidence 0.70)

        DECODING_TABLE[0x81] = "\u0411"  # Б
        DECODING_TABLE[0x82] = "\u0412"  # В
        DECODING_TABLE[0x83] = "\u0413"  # Г
    likely benign LLM, confidence 0.85 Documentation decoding-table entry with Cyrillic Unicode escape.
    Reasoning

    Same documented decoding-table example using explicit Unicode escapes for Cyrillic letters, with comments; this is a legitimate codec tutorial rather than an identifier homoglyph attack.

  42. identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (in string/comment) (raw pass, confidence 0.35)

       >>> from charset_normalizer import from_bytes
       >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8'))
       >>> best_guess = results.best()
       >>> str(best_guess)
  43. info unicode-mixed-script src/charset_normalizer/__init__.py:11:30

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

       >>> from charset_normalizer import from_bytes
       >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8'))
       >>> best_guess = results.best()
       >>> str(best_guess)
  44. identifier `Oбразованието` contains homoglyph candidates: р (0440)→p, а (0430)→a, о (043E)→o, а (0430)→a (in string/comment) (raw pass, confidence 0.35)

       >>> from charset_normalizer import from_bytes
       >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8'))
       >>> best_guess = results.best()
       >>> str(best_guess)
  45. info unicode-mixed-script src/charset_normalizer/__init__.py:11:98

    identifier `Oбразованието` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

       >>> from charset_normalizer import from_bytes
       >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8'))
       >>> best_guess = results.best()
       >>> str(best_guess)
  46. identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (in string/comment) (raw pass, confidence 0.35)

       >>> str(best_guess)
       'Bсеки човек има право на образование. Oбразованието!'
    
    Others methods and usages are available - see the full documentation
  47. info unicode-mixed-script src/charset_normalizer/__init__.py:14:5

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

       >>> str(best_guess)
       'Bсеки човек има право на образование. Oбразованието!'
    
    Others methods and usages are available - see the full documentation
  48. identifier `Oбразованието` contains homoglyph candidates: р (0440)→p, а (0430)→a, о (043E)→o, а (0430)→a (in string/comment) (raw pass, confidence 0.35)

       >>> str(best_guess)
       'Bсеки човек има право на образование. Oбразованието!'
    
    Others methods and usages are available - see the full documentation
  49. info unicode-mixed-script src/charset_normalizer/__init__.py:14:73

    identifier `Oбразованието` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

       >>> str(best_guess)
       'Bсеки човек има право на образование. Oбразованието!'
    
    Others methods and usages are available - see the full documentation
  50. identifier `о` contains homoglyph candidates: о (043E)→o (in string/comment) (raw pass, confidence 0.35)

        "Russian": [
            "о",
            "е",
            "а",
  51. identifier `е` contains homoglyph candidates: е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "о",
            "е",
            "а",
            "и",
  52. identifier `а` contains homoglyph candidates: а (0430)→a (in string/comment) (raw pass, confidence 0.35)

            "е",
            "а",
            "и",
            "н",
  53. identifier `с` contains homoglyph candidates: с (0441)→c (in string/comment) (raw pass, confidence 0.35)

            "т",
            "с",
            "р",
            "в",
  54. identifier `р` contains homoglyph candidates: р (0440)→p (in string/comment) (raw pass, confidence 0.35)

            "с",
            "р",
            "в",
            "л",
  55. identifier `у` contains homoglyph candidates: у (0443)→y (in string/comment) (raw pass, confidence 0.35)

            "п",
            "у",
            "г",
            "я",
  56. identifier `х` contains homoglyph candidates: х (0445)→x (in string/comment) (raw pass, confidence 0.35)

            "ч",
            "х",
            "ж",
            "ц",
  57. identifier `о` contains homoglyph candidates: о (043E)→o (in string/comment) (raw pass, confidence 0.35)

        "Ukrainian": [
            "о",
            "а",
            "н",
  58. identifier `а` contains homoglyph candidates: а (0430)→a (in string/comment) (raw pass, confidence 0.35)

            "о",
            "а",
            "н",
            "і",
  59. identifier `і` contains homoglyph candidates: і (0456)→i (in string/comment) (raw pass, confidence 0.35)

            "н",
            "і",
            "и",
            "р",
  60. identifier `р` contains homoglyph candidates: р (0440)→p (in string/comment) (raw pass, confidence 0.35)

            "и",
            "р",
            "в",
            "т",
  61. identifier `е` contains homoglyph candidates: е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "т",
            "е",
            "с",
            "к",
  62. identifier `с` contains homoglyph candidates: с (0441)→c (in string/comment) (raw pass, confidence 0.35)

            "е",
            "с",
            "к",
            "л",
  63. identifier `у` contains homoglyph candidates: у (0443)→y (in string/comment) (raw pass, confidence 0.35)

            "л",
            "у",
            "д",
            "м",
  64. identifier `х` contains homoglyph candidates: х (0445)→x (in string/comment) (raw pass, confidence 0.35)

            "ч",
            "х",
            "ц",
            "ї",
  65. identifier `а` contains homoglyph candidates: а (0430)→a (in string/comment) (raw pass, confidence 0.35)

        "Serbian": [
            "а",
            "и",
            "о",
  66. identifier `о` contains homoglyph candidates: о (043E)→o (in string/comment) (raw pass, confidence 0.35)

            "и",
            "о",
            "е",
            "н",
  67. identifier `е` contains homoglyph candidates: е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "о",
            "е",
            "н",
            "р",
  68. identifier `р` contains homoglyph candidates: р (0440)→p (in string/comment) (raw pass, confidence 0.35)

            "н",
            "р",
            "с",
            "у",
  69. identifier `с` contains homoglyph candidates: с (0441)→c (in string/comment) (raw pass, confidence 0.35)

            "р",
            "с",
            "у",
            "т",
  70. identifier `у` contains homoglyph candidates: у (0443)→y (in string/comment) (raw pass, confidence 0.35)

            "с",
            "у",
            "т",
            "к",
  71. identifier `а` contains homoglyph candidates: а (0430)→a (in string/comment) (raw pass, confidence 0.35)

        "Bulgarian": [
            "а",
            "и",
            "о",
  72. identifier `о` contains homoglyph candidates: о (043E)→o (in string/comment) (raw pass, confidence 0.35)

            "и",
            "о",
            "е",
            "н",
  73. identifier `е` contains homoglyph candidates: е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "о",
            "е",
            "н",
            "т",
  74. identifier `р` contains homoglyph candidates: р (0440)→p (in string/comment) (raw pass, confidence 0.35)

            "т",
            "р",
            "с",
            "в",
  75. identifier `с` contains homoglyph candidates: с (0441)→c (in string/comment) (raw pass, confidence 0.35)

            "р",
            "с",
            "в",
            "л",
  76. identifier `у` contains homoglyph candidates: у (0443)→y (in string/comment) (raw pass, confidence 0.35)

            "ъ",
            "у",
            "б",
            "ч",
  77. identifier `х` contains homoglyph candidates: х (0445)→x (in string/comment) (raw pass, confidence 0.35)

            "щ",
            "х",
        ],
        "Croatian": [
  78. identifier `α` contains homoglyph candidates: α (03B1)→a (in string/comment) (raw pass, confidence 0.35)

        "Greek": [
            "α",
            "τ",
            "ο",
  79. identifier `ο` contains homoglyph candidates: ο (03BF)→o (in string/comment) (raw pass, confidence 0.35)

            "τ",
            "ο",
            "ι",
            "ε",
  80. identifier `ν` contains homoglyph candidates: ν (03BD)→v (in string/comment) (raw pass, confidence 0.35)

            "ε",
            "ν",
            "ρ",
            "σ",
  81. identifier `ρ` contains homoglyph candidates: ρ (03C1)→p (in string/comment) (raw pass, confidence 0.35)

            "ν",
            "ρ",
            "σ",
            "κ",
  82. identifier `κ` contains homoglyph candidates: κ (03BA)→k (in string/comment) (raw pass, confidence 0.35)

            "σ",
            "κ",
            "η",
            "π",
  83. identifier `η` contains homoglyph candidates: η (03B7)→n (in string/comment) (raw pass, confidence 0.35)

            "κ",
            "η",
            "π",
            "ς",
  84. identifier `а` contains homoglyph candidates: а (0430)→a (in string/comment) (raw pass, confidence 0.35)

        "Kazakh": [
            "а",
            "ы",
            "е",
  85. identifier `е` contains homoglyph candidates: е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "ы",
            "е",
            "н",
            "т",
  86. identifier `р` contains homoglyph candidates: р (0440)→p (in string/comment) (raw pass, confidence 0.35)

            "т",
            "р",
            "л",
            "і",
  87. identifier `і` contains homoglyph candidates: і (0456)→i (in string/comment) (raw pass, confidence 0.35)

            "л",
            "і",
            "д",
            "с",
  88. identifier `с` contains homoglyph candidates: с (0441)→c (in string/comment) (raw pass, confidence 0.35)

            "д",
            "с",
            "м",
            "қ",
  89. identifier `о` contains homoglyph candidates: о (043E)→o (in string/comment) (raw pass, confidence 0.35)

            "к",
            "о",
            "б",
            "и",
  90. identifier `у` contains homoglyph candidates: у (0443)→y (in string/comment) (raw pass, confidence 0.35)

            "и",
            "у",
            "ғ",
            "ж",
  91. info unicode-homoglyph tests/test_base_detection.py:171:10

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "Bсеки човек има право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование.".encode(),
  92. info unicode-mixed-script tests/test_base_detection.py:171:10

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

            "Bсеки човек има право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование.".encode(),
  93. info unicode-homoglyph tests/test_base_detection.py:171:78

    identifier `Oбразованието` contains homoglyph candidates: р (0440)→p, а (0430)→a, о (043E)→o, а (0430)→a (in string/comment) (raw pass, confidence 0.35)

            "Bсеки човек има право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование.".encode(),
  94. info unicode-mixed-script tests/test_base_detection.py:171:78

    identifier `Oбразованието` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

            "Bсеки човек има право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование.".encode(),
  95. info unicode-homoglyph tests/test_base_detection.py:171:165

    identifier `се` contains homoglyph candidates: с (0441)→c, е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "Bсеки човек има право на образование. Oбразованието трябва да бъде безплатно, поне що се отнася до началното и основното образование.".encode(),
  96. info unicode-homoglyph tests/test_base_detection.py:172:10

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (in string/comment) (raw pass, confidence 0.35)

            "Bсеки човек има право на образование.".encode(),
            "(° ͜ʖ °), creepy face, smiley 😀".encode(),
            """["Financiën", "La France"]""".encode(),
  97. info unicode-mixed-script tests/test_base_detection.py:172:10

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

            "Bсеки човек има право на образование.".encode(),
            "(° ͜ʖ °), creepy face, smiley 😀".encode(),
            """["Financiën", "La France"]""".encode(),
  98. info unicode-homoglyph tests/test_base_detection.py:249:10

    identifier `Bсеки` contains homoglyph candidates: с (0441)→c, е (0435)→e (in string/comment) (raw pass, confidence 0.35)

        best_guess = from_bytes(
            "Bсеки човек има право на образование.".encode("cp1251")
        ).best()
  99. info unicode-mixed-script tests/test_base_detection.py:249:10

    identifier `Bсеки` mixes scripts: Latin + Cyrillic (in string/comment) (raw pass, confidence 0.40)

        best_guess = from_bytes(
            "Bсеки човек има право на образование.".encode("cp1251")
        ).best()

Reproduce This Scan

Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.

cargo install disclude --version 4.0.0
git clone https://github.com/jawah/charset_normalizer charset_normalizer && cd charset_normalizer
git checkout 3.5.2
disclude scan --severity info --diff 3.5.1 .