Hi,
When constructing StreamWriter with the following..
FileStream f = new FileStream(..);
StreamWriter s = new StreamWriter(f) ;
Then attempt to write out åäö letters they become garbage.
BUT
If we call StreamWriter as follows...
FileStream f = new FileStream(..);
StreamWriter s = new StreamWriter(f, System.Text.Enc oding.Default);
Its ok. So why is default not the actual DEFAULT as it says on the ctor?
It seems to me either the ctor is wrong or the name .Default is misleading.
Thanks. 33 4377
<di********@dis cussion.microso ft.com> wrote: When constructing StreamWriter with the following.. FileStream f = new FileStream(..); StreamWriter s = new StreamWriter(f) ; Then attempt to write out åäö letters they become garbage. BUT If we call StreamWriter as follows... FileStream f = new FileStream(..); StreamWriter s = new StreamWriter(f, System.Text.Enc oding.Default); Its ok. So why is default not the actual DEFAULT as it says on the ctor?
It seems to me either the ctor is wrong or the name .Default is misleading.
..Default is *slightly* misleading, although all the information is in
the documentation. The docs for new StreamWriter(St ream) say:
<quote>
This constructor creates a StreamWriter with UTF-8 encoding whose
GetPreamble method returns an empty byte array. The BaseStream property
is initialized using the stream parameter.
</quote>
However, the brief summary saying that it uses "the default" encoding
is misleading (I'll mail MS about it).
..Default means the default *platform* encoding - but pretty much
everything in .NET itself uses UTF-8 by default.
--
Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
So UTF8 cant handle umlaut characters it seems then
"Jon Skeet [C# MVP]" <sk***@pobox.co m> wrote in message
news:MP******** *************** *@msnews.micros oft.com...
<di********@dis cussion.microso ft.com> wrote: When constructing StreamWriter with the following.. FileStream f = new FileStream(..); StreamWriter s = new StreamWriter(f) ;
Then attempt to write out åäö letters they become garbage.
BUT
If we call StreamWriter as follows... FileStream f = new FileStream(..); StreamWriter s = new StreamWriter(f, System.Text.Enc oding.Default);
Its ok. So why is default not the actual DEFAULT as it says on the ctor?
It seems to me either the ctor is wrong or the name .Default is
misleading.
..Default is *slightly* misleading, although all the information is in
the documentation. The docs for new StreamWriter(St ream) say:
<quote>
This constructor creates a StreamWriter with UTF-8 encoding whose
GetPreamble method returns an empty byte array. The BaseStream property
is initialized using the stream parameter.
</quote>
However, the brief summary saying that it uses "the default" encoding
is misleading (I'll mail MS about it).
..Default means the default *platform* encoding - but pretty much
everything in .NET itself uses UTF-8 by default.
--
Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
<di********@dis cussion.microso ft.com> wrote: So UTF8 cant handle umlaut characters it seems then
Yes it can. It's just that whatever you were using to read the file
presumably wasn't aware that it was encoded in UTF-8.
--
Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
According to windows file system it says ASCII :D
I thought that was standard enough :D Because I used the same format all the
way thru the code and its umlauted ok but when its writing (using the
default ctors) its garbled. I wiped the file, changed it to construct the
SR with Encoding.Defaul t and its saving the umlat charset now, howcome the
usual ctor with FileStream doesnt save umlaut chars then as nowwhere else
did I specify any form of encoding until this change to fix it.
"Jon Skeet [C# MVP]" <sk***@pobox.co m> wrote in message
news:MP******** *************** *@msnews.micros oft.com... <di********@dis cussion.microso ft.com> wrote: So UTF8 cant handle umlaut characters it seems then
Yes it can. It's just that whatever you were using to read the file presumably wasn't aware that it was encoded in UTF-8.
-- Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet If replying to the group, please do not mail me too
<?xml version="1.0" encoding="utf-8"?>
was even defined in the XML file that I got the string from, its even stored
in the String type correctly its just when writing to the file.
Normal calls specified WITHOUT encoding parameters did NOT save the umlaut
chars.
"Jon Skeet [C# MVP]" <sk***@pobox.co m> wrote in message
news:MP******** *************** *@msnews.micros oft.com... <di********@dis cussion.microso ft.com> wrote: So UTF8 cant handle umlaut characters it seems then
Yes it can. It's just that whatever you were using to read the file presumably wasn't aware that it was encoded in UTF-8.
-- Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet If replying to the group, please do not mail me too
Opening the text file in notepad and selecting save as shows its ANSI, not
UTF8- how come the file create when appending does not store the file as
UTF8 then as thats suppost to be the default that you state?
That would cause the mixmatch if the file create is creating as ANSI and all
methods default to UTF8.
<di********@dis cussion.microso ft.com> wrote in message
news:ev******** ******@TK2MSFTN GP10.phx.gbl... <?xml version="1.0" encoding="utf-8"?>
was even defined in the XML file that I got the string from, its even
stored in the String type correctly its just when writing to the file.
Normal calls specified WITHOUT encoding parameters did NOT save the umlaut chars. "Jon Skeet [C# MVP]" <sk***@pobox.co m> wrote in message news:MP******** *************** *@msnews.micros oft.com... <di********@dis cussion.microso ft.com> wrote: So UTF8 cant handle umlaut characters it seems then
Yes it can. It's just that whatever you were using to read the file presumably wasn't aware that it was encoded in UTF-8.
-- Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet If replying to the group, please do not mail me too
<di********@dis cussion.microso ft.com> wrote: According to windows file system it says ASCII :D
What do you mean by "according to the Windows file system"?
I thought that was standard enough :D
ASCII doesn't have any characters with accents.
Because I used the same format all the way thru the code and its umlauted ok but when its writing (using the default ctors) its garbled. I wiped the file, changed it to construct the SR with Encoding.Defaul t and its saving the umlat charset now, howcome the usual ctor with FileStream doesnt save umlaut chars then as nowwhere else did I specify any form of encoding until this change to fix it.
It *does* save umlaut characters, it's just that what you're using to
read the file isn't recognising that it's UTF-8. You later say:
Opening the text file in notepad and selecting save as shows its ANSI, not UTF8
That's just notepad being confused.
UTF-8 works fine, the framework works fine - but some of your tools may
not be doing what you want them to.
See http://www.pobox.com/~skeet/csharp/unicode.html for more
information about encodings.
--
Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
You're right, because notepad isnt standard at all for reading text files.
Nobody in theyre right mind uses it or Wintail etc to view logs. No no not
at all :D
Its fine when i specify Encoding.Defaul t on StreamWriter yet its NOT when I
dont specify ANY encoding anywhere in the app.
"Jon Skeet [C# MVP]" <sk***@pobox.co m> wrote in message
news:MP******** *************** *@msnews.micros oft.com... <di********@dis cussion.microso ft.com> wrote: According to windows file system it says ASCII :D
What do you mean by "according to the Windows file system"?
I thought that was standard enough :D
ASCII doesn't have any characters with accents.
Because I used the same format all the way thru the code and its umlauted ok but when its writing (using the default ctors) its garbled. I wiped the file, changed it to construct
the SR with Encoding.Defaul t and its saving the umlat charset now, howcome
the usual ctor with FileStream doesnt save umlaut chars then as nowwhere
else did I specify any form of encoding until this change to fix it.
It *does* save umlaut characters, it's just that what you're using to read the file isn't recognising that it's UTF-8. You later say:
Opening the text file in notepad and selecting save as shows its ANSI, not UTF8
That's just notepad being confused.
UTF-8 works fine, the framework works fine - but some of your tools may not be doing what you want them to.
See http://www.pobox.com/~skeet/csharp/unicode.html for more information about encodings.
-- Jon Skeet - <sk***@pobox.co m> http://www.pobox.com/~skeet If replying to the group, please do not mail me too
Jon Skeet [C# MVP] <sk***@pobox.co m> wrote in
news:MP******** *************** *@msnews.micros oft.com: <di********@dis cussion.microso ft.com> wrote: Because I used the same format all the way thru the code and its umlauted ok but when its writing (using the default ctors) its garbled. I wiped the file, changed it to construct the SR with Encoding.Defaul t and its saving the umlat charset now, howcome the usual ctor with FileStream doesnt save umlaut chars then as nowwhere else did I specify any form of encoding until this change to fix it.
It *does* save umlaut characters, it's just that what you're using to read the file isn't recognising that it's UTF-8. You later say:
The byte specification in the actual raw data misses UTF-8
specification when you use Default. I was bitten by the same thing. I had
to explicitly state Encoding.Unicod e. WHen I used Encoding.Defaul t, it
should work according to the docs, but it didn't. It did save stuff like
scandinavian characters away in the file, but it couldn't read it back
correctly, even if I stated UTF-8 as encoding or whatever in the xml
header. So I think he's right. Opening the text file in notepad and selecting save as shows its ANSI, not UTF8
That's just notepad being confused. UTF-8 works fine, the framework works fine - but some of your tools may not be doing what you want them to.
If you specify Encoding.Unicod e, it will work, if you specify
Encoding.Defaul t it will not in some cases. In both cases, the files do
NOT have an XML heading explaining the encoding. The actual encoding is in
the bytes in the file (and probably in a meta-data property in NTFS). That
specification is not read back / or written correctly when you use
Default. I think that's the reason for his complaint and I have to admit,
he's right, I had exactly the same thing.
Frans
--
Get LLBLGen Pro, the new O/R mapper for .NET: http://www.llblgen.com This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Vladimir Bezugliy |
last post by:
I have a server that listen a socket.
And I have next client:
TcpClient socketForServer = new TcpClient("IVBEZUGLIY", 21000);
NetworkStream networkStream = socketForServer.GetStream();
StreamWriter streamWriter = new StreamWriter(networkStream);
streamWriter.Write("Hello12345!!!");
streamWriter.Flush();
//streamWriter.Close();
|
by: Majed |
last post by:
Hi , all
I'm trying to write unicode to a file for another app (not developed with
vs2003) to read it. I used StreamWriter with unicode encoding.but I was
surprised that the streamwriter adds FFFE to the start of the file,which
stopes the other app from reading it!!
any idea how to stope it frome doing that,do I have to use another class
#####writer that supports unicode?
help me Please!
Thanks
|
by: Daniel |
last post by:
i would like to konw when the data sent so that i can close the streamwriter
and networkstream is there some sort of call backs/events i have to
implement for this to work? if so how? can i just open neworkstream and
streamwriter, send data and then close it syncrhronously or do i have to
implement some callbacks/events to do this like in vb6?
TcpClient myclient;
|
by: Lars Hansen |
last post by:
Hi
This is probably pretty basic, but I have a problem with the access-level
(local variable), when creating a new StreamWriter. I am trying to write
some price information to a textfile - which works fine. But due to the
dataamounts involved I now need to split it out to several files.
The actions I am taking are:
- create the first file
|
by: ShadowOfTheBeast |
last post by:
Hi, I have got a major headache understanding streamReader and streamWriter
relationship.
I know how to use the streamreader and streamwriter independently.
but how do you write out using the streamwriter, what you have read into a
streamReader? and also can someone explain how they work in simple terms
--
The Matrix Insurrection
| |
by: rex64 |
last post by:
I am getting an error message and I have not been able to figure hot
how to fix it. I have done some research with no answers yet.
I found this code that may help? Not sure what to do with it.
using (StreamWriter sw = new StreamWriter (fullAddress , false,
Encoding.UTF7))
Error message::::::::::::::::::::::::::::::::::::::::::::::
|
by: Oscar Thornell |
last post by:
Hi,
I generate and temporary saves a text file to disk. Later I upload this file
to Microsoft MapPoint (not so important).
The file needs to be in UTF-8 encoding and I explicitly use the
"Encoding.UTF8" in the constructor like this:
StreamWriter writer = new StreamWriter(file, Encoding.UTF8);
When I do this the StreamWriter inserts an UTF-8 preamble "" into the
|
by: Max Powers |
last post by:
Hello, I have a VB.NET code that creates a StreamWriter file first and
then it does a series of procedures that write lines for this
StreamWriter. When all the procedures are done, the StreamWriter is
flushed and closed and all the lines get written to the text.
However, if for some reason one of the procedures fails. The
StreamWriter doesn't write anything at all and the file ends up empty.
Is there a way to save (or actually write)...
|
by: Heron |
last post by:
Hi,
Could someone explain me why the following code doesn't work? The
memorystream always remains with length 0.
MemoryStream input = new MemoryStream();
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
| |