php до сих пор плохо поддерживает юникодные строки!
Это не отменяет убогости языка, который не разделяет String (все символы - Char, быть может многобайтовые) и ByteString - последовательность байтов.
Либо же ждать нормального релиза 6-ки, которая по умолчанию будет работать с utf8
Либо же ждать нормального релиза 6-ки, которая по умолчанию будет работать с utf8уже 5 версий языка преимущественно для работы с текстом (задача php - генерация составных частей html) выпустили, а юникод так и не научились держать. Виват ПХП.
Не стоит так недооценивать пхп и высасывать из пальца его недостатки. Нет ничего идеального.
Тут скорее дело вкуса.
уже 5 версий языка преимущественно для работы с текстом (задача php - генерация составных частей html) выпустили, а юникод так и не научились держать. Виват ПХП.Да как бы не так уж и много языков, которые уникод без бубна поддерживают. Ну т.е., чтобы никаких дополнительных инклудов не писать всюду, опций интерпретатору и т.п.
Да как бы не так уж и много языков, которые уникод без бубна поддерживают.
main = print (Prelude.length "privet") >> print (Prelude.length "привет")
main = print (Prelude.length "privet") >> print (Prelude.length "привет") >> print "привет"
6
6
"\1087\1088\1080\1074\1077\1090"
славная ява порвала сраный пыхыхпы?
$ cabal install text
Resolving dependencies...
Downloading extensible-exceptions-0.1.1.1...
Configuring extensible-exceptions-0.1.1.1...
Preprocessing library extensible-exceptions-0.1.1.1...
Building extensible-exceptions-0.1.1.1...
[1 of 1] Compiling Control.Exception.Extensible ( Control/Exception/Extensible.hs, dist/build/Control/Exception/Extensible.o )
/usr/bin/ar: creating dist/build/libHSextensible-exceptions-0.1.1.1.a
Installing library in
/home/bipll/.cabal/lib/extensible-exceptions-0.1.1.1/ghc-6.8.2
Registering extensible-exceptions-0.1.1.1...
Reading package info from "dist/installed-pkg-config" ... done.
Saving old package config file... done.
Writing new package config file... done.
Downloading text-0.7.0.1...
Configuring text-0.7.0.1...
Preprocessing library text-0.7.0.1...
Building text-0.7.0.1...
[ 1 of 29] Compiling Data.Text.UnsafeShift ( Data/Text/UnsafeShift.hs, dist/build/Data/Text/UnsafeShift.o )
[ 2 of 29] Compiling Data.Text.IO.Internal ( Data/Text/IO/Internal.hs, dist/build/Data/Text/IO/Internal.o )
[ 3 of 29] Compiling Data.Text.Fusion.Size ( Data/Text/Fusion/Size.hs, dist/build/Data/Text/Fusion/Size.o )
[ 4 of 29] Compiling Data.Text.Fusion.Internal ( Data/Text/Fusion/Internal.hs, dist/build/Data/Text/Fusion/Internal.o )
[ 5 of 29] Compiling Data.Text.Fusion.CaseMapping ( Data/Text/Fusion/CaseMapping.hs, dist/build/Data/Text/Fusion/CaseMapping.o )
[ 6 of 29] Compiling Data.Text.Fusion.Common ( Data/Text/Fusion/Common.hs, dist/build/Data/Text/Fusion/Common.o )
[ 7 of 29] Compiling Data.Text.Encoding.Utf8 ( Data/Text/Encoding/Utf8.hs, dist/build/Data/Text/Encoding/Utf8.o )
[ 8 of 29] Compiling Data.Text.Encoding.Utf32 ( Data/Text/Encoding/Utf32.hs, dist/build/Data/Text/Encoding/Utf32.o )
[ 9 of 29] Compiling Data.Text.Encoding.Utf16 ( Data/Text/Encoding/Utf16.hs, dist/build/Data/Text/Encoding/Utf16.o )
[10 of 29] Compiling Data.Text.Array ( Data/Text/Array.hs, dist/build/Data/Text/Array.o )
Data/Text/Array.hs:80:52:
Warning: Imported from `Data.Typeable' but not used:
type constructor or class `TyCon'
Data/Text/Array.hs:94:0:
Warning: Definition but no type signature for `arrayTc'
Inferred type: arrayTc :: TyCon
Data/Text/Array.hs:105:0:
Warning: Definition but no type signature for `mArrayTc'
Inferred type: mArrayTc :: TyCon
[11 of 29] Compiling Data.Text.Internal ( Data/Text/Internal.hs, dist/build/Data/Text/Internal.o )
[12 of 29] Compiling Data.Text.Search ( Data/Text/Search.hs, dist/build/Data/Text/Search.o )
[13 of 29] Compiling Data.Text.UnsafeChar ( Data/Text/UnsafeChar.hs, dist/build/Data/Text/UnsafeChar.o )
[14 of 29] Compiling Data.Text.Fusion ( Data/Text/Fusion.hs, dist/build/Data/Text/Fusion.o )
[15 of 29] Compiling Data.Text.Encoding.Fusion.Common ( Data/Text/Encoding/Fusion/Common.hs, dist/build/Data/Text/Encoding/Fusion/Common.o )
[16 of 29] Compiling Data.Text.Unsafe ( Data/Text/Unsafe.hs, dist/build/Data/Text/Unsafe.o )
[17 of 29] Compiling Data.Text.Foreign ( Data/Text/Foreign.hs, dist/build/Data/Text/Foreign.o )
[18 of 29] Compiling Data.Text.Encoding.Error ( Data/Text/Encoding/Error.hs, dist/build/Data/Text/Encoding/Error.o )
[19 of 29] Compiling Data.Text.Encoding.Fusion ( Data/Text/Encoding/Fusion.hs, dist/build/Data/Text/Encoding/Fusion.o )
[20 of 29] Compiling Data.Text.Lazy.Encoding.Fusion ( Data/Text/Lazy/Encoding/Fusion.hs, dist/build/Data/Text/Lazy/Encoding/Fusion.o )
[21 of 29] Compiling Data.Text.Encoding ( Data/Text/Encoding.hs, dist/build/Data/Text/Encoding.o )
[22 of 29] Compiling Data.Text ( Data/Text.hs, dist/build/Data/Text.o )
[23 of 29] Compiling Data.Text.IO ( Data/Text/IO.hs, dist/build/Data/Text/IO.o )
[24 of 29] Compiling Data.Text.Lazy.Internal ( Data/Text/Lazy/Internal.hs, dist/build/Data/Text/Lazy/Internal.o )
[25 of 29] Compiling Data.Text.Lazy.Fusion ( Data/Text/Lazy/Fusion.hs, dist/build/Data/Text/Lazy/Fusion.o )
[26 of 29] Compiling Data.Text.Lazy.Search ( Data/Text/Lazy/Search.hs, dist/build/Data/Text/Lazy/Search.o )
[27 of 29] Compiling Data.Text.Lazy ( Data/Text/Lazy.hs, dist/build/Data/Text/Lazy.o )
Data/Text/Lazy.hs:1195:0:
Warning: Defined but not used: `countChar'
[28 of 29] Compiling Data.Text.Lazy.Encoding ( Data/Text/Lazy/Encoding.hs, dist/build/Data/Text/Lazy/Encoding.o )
[29 of 29] Compiling Data.Text.Lazy.IO ( Data/Text/Lazy/IO.hs, dist/build/Data/Text/Lazy/IO.o )
/usr/bin/ar: creating dist/build/libHStext-0.7.0.1.a
Installing library in /home/bipll/.cabal/lib/text-0.7.0.1/ghc-6.8.2
Registering text-0.7.0.1...
Reading package info from "dist/installed-pkg-config" ... done.
Saving old package config file... done.
Writing new package config file... done.
6
7
Вот как надо:
Это не "без бубна".
Это не "без бубна".Вот и я про то же.
И да - кабал не предлагать. Я пользуюсь встроенным пакетным менеджером генты и не намерен использовать сразу несколько разных без синхронизации - а её между portage и cabal нету.
xaositect2:~$ ghci
GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> print "привет"
"\1087\1088\1080\1074\1077\1090"
Prelude> putStrLn "привет"
привет
Prelude> :m +Text.Printf
Prelude Text.Printf> printf "привет\n"
привет
Debian squeeze/sid, haskell-platform из дистрибутива.
Всё-таки танцы с бубном необходимы
выдал какой-то странный набор значков.
У меня тоже. Но у меня ghci 6.10.1. Может, в 6.12 лучше стало?
У меня тоже. Но у меня ghci 6.10.1. Может, в 6.12 лучше стало?У меня в gentoo 6.8 хрень выдаёт, а в arch 6.12.1 нормально.
Хаскель не умеет выводить юникод.Он-то как раз умеет. Просто нет такого терминала, который умеет этот юникод понимать.
Оставить комментарий
stm6692945
strlen('privet')=6strlen('привет')=12