Предостережение: я не знаю Java. Немного о наборе символов.
Вы не указываете, какой набор символов вы используете точно.
Но независимо от того, что вы используете, невозможно преобразовать строку Unicode в ASCII и сохранить исходную длину и положение символов, просто потому что набор символов Unicode будет использовать несколько байтов для некоторых персонажей (очевидно).
Единственное исключение, о котором я знаю, это строка UTF-8, содержащая только символы ASCII: эта строка уже будет идентична как в UTF-8, так и в ASCII, поскольку UTF-8 использует многобайтовые символы только при необходимости. (Я не знаю о других разновидностях Unicode, могут быть и другие динамические).
Единственный обходной путь, который я вижу, - это добавление пробела к любому специальному символу, который был заменен на ASCII, но это испортит строку (Göteborg
в UTF8 должен был бы стать Go teborg
, чтобы сохранить длину) .
Может быть, вы хотите уточнить, чего вы хотите / нужно достичь, чтобы люди здесь могли предложить обходные пути.