Co pokazuje -1 i -2 IntelliJ Debugger w łańcuchu znaków UTF8 i jak to usunąć? [duplikować]

Dec 08 2020

Podczas analizowania ciągu z pliku w systemie Windows 10 mam dwa znaki, których nie można usunąć za pomocą białych znaków i tym podobnych.

Oto dowód sprawcy.

To trochę psuje moje wyrażenie regularne, ^(\w+)ponieważ zdarza się, że jest w nim spacja. Kiedy na przykład kopiuję wartość ciągu (zrzut ekranu) do RegExr, widzę, że dodano spację - i dlatego moje wyrażenie regularne będzie działać w sieci.

Już wyszukałem w Google, -1 -2 in UTF-8 stringale nie mogłem niczego znaleźć, dlatego jestem z tym bardzo zdezorientowany.

Odpowiedzi

2 Blindy Dec 08 2020 at 02:09

Twój debugger jest głupi, pokazując je odpowiednio jako -1 i -2, ale jest wystarczająco jasne, że masz do czynienia z BOM UTF-16 (a nie UTF-8, jak twierdzisz w pytaniu, ten jest 3-bajtowy marker, który jest zupełnie inny).

Możesz sprawdzić ich obecność i usunąć je, jeśli napotkasz je na początku pliku, chociaż najlepiej byłoby zapisać plik w pierwszej kolejności bez BOM.