Module: PHP
- Defined in:
- lib/php_serialize_encoded.rb
Class Method Summary collapse
-
.encode_in_deep(val, encoding) ⇒ Object
Когда битрикс работает с базой в cp1251, а рельсы с UTF-8 Возникают проблемы с подсчетом длинны строк при сериализации ‘тест’ в cp1251 имеет 4 символа, а в utf-8 - 8.
- .serialize_encoded(val) ⇒ Object
- .unserialize_encoded(s) ⇒ Object
Class Method Details
.encode_in_deep(val, encoding) ⇒ Object
Когда битрикс работает с базой в cp1251, а рельсы с UTF-8 Возникают проблемы с подсчетом длинны строк при сериализации ‘тест’ в cp1251 имеет 4 символа, а в utf-8 - 8.
Поэтому приходится производить все сериализацию через эти врапперы.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/php_serialize_encoded.rb', line 10 def PHP.encode_in_deep(val, encoding) if val.is_a? Array val = val.map { |v| encode_in_deep(v, encoding) } elsif val.is_a? Hash val.each_pair do |k,v| val[k] = encode_in_deep(v, encoding) end elsif val.is_a? String val = val.encode(encoding) end val end |
.serialize_encoded(val) ⇒ Object
23 24 25 26 |
# File 'lib/php_serialize_encoded.rb', line 23 def PHP.serialize_encoded(val) val = encode_in_deep(val, 'CP1251') serialize(val).encode('UTF-8') end |
.unserialize_encoded(s) ⇒ Object
28 29 30 31 32 |
# File 'lib/php_serialize_encoded.rb', line 28 def PHP.unserialize_encoded(s) val = unserialize(s.encode('CP1251')) val = encode_in_deep(val, 'UTF-8') val end |