Ruby 1.8 не использует кодировки, он использует простые байтовые строки. Если вы хотите, чтобы строка байтов в вашей программе соответствовала строке байтов на веб-странице, вам нужно сохранить файл .rb в той же кодировке, что и веб-страницы (GB2312), чтобы Ruby видел те же байты. 1001 *
Вероятно, лучше было бы написать строку байтов явно, избегая проблем, связанных с кодировкой файла .rb:
res.include?("\xD6\xD0\xCE\xC4")
Однако совпадающие строки байтов не соответствуют символам надежно, когда используются многобайтовые кодировки (за исключением UTF-8, который специально предназначен для этого). Если на веб-странице была строка:
兄形男
в нем, это будет закодировано как "\xD0\xD6\xD0\xCE\xC4\xD0"
. Который содержит последовательность байтов "\xD6\xD0\xCE\xC4"
, поэтому include?
будет true
, даже если символы 中文
отсутствуют.
Если вам нужно полностью надежно обрабатывать символы, не входящие в ASCII, вам нужен язык с поддержкой Unicode.