Ответы пользователя по тегу Кодировка символов
  • Почему Rails не хочет брать русские буквы в URL?

    @Silaev Автор вопроса
    Решение: Переустановив ruby, rails, все гемы — проблема не решилась. Решил посмотреть туда, где была вызвана ошибка:
    [2012-07-30 10:46:52] ERROR Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT
        /Users/dmsilaev/.rvm/gems/ruby-1.9.2-p320/gems/actionpack-3.2.7/lib/action_dispatch/middleware/static.rb:14:in `join'
    


    Посмотрев в файл, на 14 строчку, я обнаружил вот такой метод
      def match?(path)
          path = path.dup
    
          full_path = path.empty? ? @root : File.join(@root, escape_glob_chars(unescape_path(path))) #14 line
          paths = "#{full_path}#{ext}"
    
          matches = Dir[paths]
          match = matches.detect { |m| File.file?(m) }
          if match
            match.sub!(@compiled_root, '')
            ::Rack::Utils.escape(match)
          end
        end
    


    Посмотрев ниже в файл, нашел метод escape_glob_chars:
    def escape_glob_chars(path)
          path.force_encoding('binary') if path.respond_to? :force_encoding
          path.gsub(/[*?{}\[\]]/, "\\\\\\&")
        end
    


    И поменяв «binary» на «utf-8» проблема решилаcь.

    Надеюсь кому-нибудь из столкнувшихся с той же проблемой я помогу.
    Ответ написан
    Комментировать
  • Почему Rails не хочет брать русские буквы в URL?

    @Silaev Автор вопроса
    Тоже, видимо рельсы криво совсем встали. Хотя все равно не понимаю почему так
    MacBook-Pro-Dmitrij:TwiSup dmsilaev$ LANG="en_US.utf8" rails s
    /Users/dmsilaev/.rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.6/lib/rails/engine.rb:365:in `sub': invalid byte sequence in US-ASCII (ArgumentError)
    
    Ответ написан