Вы можете просто запросить имя пользователя, а затем в модели контроллера / формы удалить @
(и весь префикс ' http://instagram.com/ ', если кто-то вставит URL вместо имени пользователя) [114 ]
<%= f.text_field :instagram_username, required: true, label: "instagram.com/" %>
Контроллер что-то вроде:
obj = Model.new(model_params)
if (username = params.dig(:some_model, :instagram_username))
username = username.gsub(%r{https?://instagram.com/}, '').gsub(/^@/, '')
obj.url = "https://instagram.com/#{CGI.escape username}"
end
Похоже, вы ищете enca
. Он может угадывать и даже конвертировать между кодировками. Просто посмотрите на страницу руководства .
Или, если это не удалось, используйте файл -i
(linux) или -I
(osx). Это выведет информацию MIME-типа для файла, которая также будет включать кодировку набора символов. Я нашел для него man-страницу :)
Это не то, что вы можете сделать безошибочно. Одной из возможностей может быть проверка каждого символа в файле, чтобы убедиться, что он не содержит символов в диапазонах 0x00 - 0x1f
или 0x7f -0x9f
, но, как я уже сказал, это может быть истинным для любого количества файлов, включая, по крайней мере, еще один вариант ISO8859.
Другая возможность - найти определенные слова в файле на всех поддерживаемых языках и посмотреть, сможете ли вы их найти.
Так Например, найдите эквивалент английских слов "and", "but", "to", "of" и т. д. на всех поддерживаемых языках 8859-1 и посмотрите, есть ли у них большое количество вхождений в файле
Я не говорю о буквальном переводе, таком как:
English French
------- ------
of de, du
and et
the le, la, les
, хотя это возможно. Я'
Действительно трудно определить, является ли это iso-8859-1. Если у вас есть текст только с 7-битными символами, который также может быть iso-8859-1, но вы не знаете. Если у вас есть 8-битные символы, то верхние символы региона также существуют в кодировках заказа. Поэтому вам придется использовать словарь, чтобы лучше угадать, какое это слово и определить, от какой буквы оно должно быть. Наконец, если вы обнаружите, что это может быть utf-8, вы уверены, что это не iso-8859-1
Кодирование - это одна из самых сложных вещей, потому что вы никогда не знаете, ничего не говорит вам