|
Posted by Jon M. on 04/28/05 14:14
Wow, nice to hear from the guy who created PHP! :)
I need to make 2 things clearer though:
1. First I want to know how to make the actual binary file that is written,
to be encoded as UTF-8. This is my PRIMARY question.
2. How to have "fwrite" write the file without the BOM. (to make it more
compatible with certain XML parsers -per the W3C's recommendation).
No matter what I do to the strings to encode them in whatever format before
using "fwrite", it ALWAYS seems to end up writing the actual file in
"iso-8859-1".
Isn't the encoding of the characters in PHP's strings, and the encoding of
the actual binary file on your hard drive, two totally different things? Or
am I just misinformed?
Example: When I open up Windows "Notepad", then I type some stuff into it,
and then I choose "file", "save as", "encoding: UTF-8", then I click "save".
So how do I do this SAME thing using PHP?
Could someone give me a actual code example of how to do that? I'm just
soooo lost.
How do you actually control the way the binary file itself is written, and
not just the text that is saved in the file?
"Rasmus Lerdorf" <rasmus@lerdorf.com> wrote in message
news:4269D508.6000502@lerdorf.com...
> Jon M. wrote:
>> "Richard Lynch" <ceo@l-i-e.com> wrote in message
>> news:4029.67.184.124.249.1114151797.squirrel@www.l-i-e.com...
>>
>>>On Thu, April 21, 2005 5:07 pm, Jon M. said:
>>>
>>>>I am trying to have a file that I generated with PHP saved as UTF-8
>>>>without
>>>>the BOM (Byte Order Mark). Does PHP do anything like this? I am a
>>>>beginner
>>>>with PHP, but very technically experienced otherwise. I'm talking about
>>>>the
>>>>FILE encoding here -just to be clear.
>>>>
>>>>e.g. fopen("what_ever_file", "a+") now I want PHP save the file itself
>>>>with
>>>>UTF-8, NOT system default.
>>>>
>>>>I have searched for hours to find an answer, but have not found any info
>>>>on
>>>>the subject.
>>>>
>>>>Does PHP have any ability to create a text file saved in UTF-8
>>>>encoding???
>>>
>>>Maybe I'm just being dumb, but I think if you UTF-8 encode your data, and
>>>http://php.net/fwrite it, you're gonna get what you want...
>>>
>>>Dunno about the Byte-Order-Mark part, but I guess you could strip it out
>>>of the UTF-8 encoded data before writing, if you wanted to.
>>>
>>>--
>>>Like Music?
>>>http://l-i-e.com/artists.htm
>>
>>
>>
>> That was the first thing I tried, and it doesn't seem to work (it always
>> saves in windows default encoding). Unless I missing something about what
>> you can do with fwrite. Did you actually test that before you replied,
>> and found that it would? If so, how? The Byte Order Mark is a part of the
>> binary file that is written, how would one go about stripping it out??
>>
>> BTW, note to PHP developers: If "fwrite" had a "encoding" parameter, e.g.
>> "UTF-8", that would be REALLY handy.
>
> Strings in PHP are binary-safe and character-encoding neutral. fwrite
> doesn't have a clue what it is writing, it just writes what is in memory.
>
> I'd question why you would want to strip the BOM. Any modern system deals
> with the byte-order-mark correctly. But you can simply strip it manually
> if it is present in the first 2 bytes before your fwrite if you really
> need to get rid of it.
>
> -Rasmus
[Back to original message]
|