well that's because it's an invalid character sequence.
if it started as a valid utf8 string, you won't see that or unencoding.
if it wasn't a utf8 string originally then you have an encoding issue.
you implied earlier that you want to share the encoded data as a string.
you don't. it's either binary, or you convert to a hex string. not utf8.
andrew
On Tuesday, 11 March 2014 12:22:48 UTC-3, Robert Feldt wrote:
>
> Yes, but the problem I had was rooted in:
>
> julia> convert(UTF8String, Uint8[0x41,0x42, 128])
> ERROR: invalid UTF-8 sequence
> in convert at utf8.jl:155
>
> /Robert
>
> Den tisdagen den 11:e mars 2014 kl. 16:21:00 UTC+1 skrev andrew cooke:
>>
>>
>> actually, it seems convert works both ways.
>>
>> julia> convert(UTF8String, [0x41,0x42])
>> "AB"
>>
>>
>>
>> On Tuesday, 11 March 2014 12:10:53 UTC-3, andrew cooke wrote:
>>>
>>>
>>> do these not do what you need (or form the basis for it)?
>>>
>>> julia> convert(Vector{Uint8}, utf8("hello world"))
>>> 11-element Array{Uint8,1}:
>>> 0x68
>>> 0x65
>>> 0x6c
>>> 0x6c
>>> 0x6f
>>> 0x20
>>> 0x77
>>> 0x6f
>>> 0x72
>>> 0x6c
>>> 0x64
>>>
>>> julia> bytestring(convert(Vector{Uint8}, utf8("hello world")))
>>> "hello world"
>>>
>>>
>>> On Tuesday, 11 March 2014 07:37:35 UTC-3, Robert Feldt wrote:
>>>>
>>>> Implementing simple RSA crypto in pure Julia (not for actual
>>>> sec-sensitive use) but for low-sec applications. But I have troubles with
>>>> encoding strings as integers and back. The PKCS#1 crypto standard says
>>>> that
>>>> strings should be seen as 8-bit (octet) strings. I tried creating a
>>>> Uint8[]
>>>> with the byte values and converting to ASCIIString but that fails when the
>>>> values are more than 7 bits. However, I cannot just convert to UTF8String
>>>> instead since those might not be valid either.
>>>>
>>>> Ideas for how to do this cleanly? Current code below... Thanks!
>>>>
>>>> # Convert a non-negative integer i into an octet string.
>>>> function i2osp(x::Integer, len = nothing)
>>>> if typeof(len) <: Integer && (x >= 256^len)
>>>> throw("integer is too large")
>>>> end
>>>>
>>>> if x < 0
>>>> throw("integer is negative")
>>>> end
>>>>
>>>> bytes = Uint8[]
>>>> while x > 0
>>>> b = uint8(x & 0xff)
>>>> push!(bytes, b)
>>>> x = x >>> 8
>>>> end
>>>> str = convert(ASCIIString, reverse(bytes)) # Fails if any byte value
>>>> > 127
>>>>
>>>> if typeof(len) <: Integer && (length(str) < len)
>>>> str = repeat("\0", len - str) * str
>>>> end
>>>>
>>>> return str
>>>> end
>>>>
>>>>