Re: Problem with encoding a character
- From: "David" <david.colliver.NEWS@xxxxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 15 Sep 2009 20:27:49 +0100
Hi Peter,
That code sample is a full sample, apart from the URL and sign-in details. I
am not sure what else I can show.
It is actually failing in the finally, the myWriter.Close().
I am also speaking with the SMS people to come to a solution. I have figured
that it is down to the byte length, not the character length. Basically, the
pound symbol is looking like 2 bytes instead of 1. I know this appears to be
happening, as when I change the ContentLength by adding one (+ 1), the pound
symbol goes through.
It was the text in the error message that gave me that clue and also the
stepping through and seeing it fail on the finally, without even being
caught by the catch. With the error message stating that it can't close
until all bytes are sent, it was the realisation that the pound sign £ must
be two bytes instead of one, as without the symbol, everything worked hunky
dory.
I thought the pound sign was a unicode character, but when I tried to change
it to unicode in the opening of the myWriter, it still failed.
If the SMS people come back with a solution or I work it out, I will post it
for reference.
--
Best regards,
Dave Colliver.
http://www.AshfieldFOCUS.com
~~
http://www.FOCUSPortals.com - Local franchises available
"Peter Duniho" <no.peted.spam@xxxxxxxxxxxxxxxxxx> wrote in message
news:op.u0a99jyrvmc1hu@xxxxxxxxxxxxxxxxxxxx
On Tue, 15 Sep 2009 08:20:59 -0700, David
<david.colliver.NEWS@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
Hi all,
I am trying to send an SMS and am having problem sending the UK Pound
symbol, £
Looks fine here. "rossum"'s newsreader is probably simply set to assume a
different encoding than mine (your post doesn't actually describe an
encoding, so the receiving newsreader has to assume something...my
newsreader "guessed" right, his "guessed" wrong :) ).
It appears to be crashing out on the streamwriter line. The result I am
getting is...
System.Net.WebException: The request was aborted: The request was
canceled. ---> System.IO.IOException: Cannot close stream until all bytes
are written.
I don't understand this description. What is "the streamwriter line"?
The only line of code you posted that actually has the word "StreamWriter"
in it is where you create it. I don't understand why you'd get something
complaining about closing when you're just trying to create it.
I suspect that for whatever reason, your request stream is not getting the
number of bytes written to it that you advertise in the ContentLength
field. It's not entirely clear why this would be; you're passing the
string length, which if anything should cause the written content to
_exceed_ the ContentLength field (i.e. for any encoding not 8-bits per
character), and in any case I don't see why you'd get an exception until
you actually try to write to the stream.
I suppose it's possible that the Stream you get back from
GetRequestStream() is a special stream for the HttpWebRequest object that
checks the bytes written and automatically closes itself when you reach
the number of bytes you said you were going to write. But even in that
case, I'd expect the exception to happen when you write to the stream, not
when you create it.
For sure, if you use any non-8-bit encoding, you're going to have problems
with the code you posted. But whether that's directly related to the
problem you're asking about, I can't say.
If you really want help, you need to figure out a way to create and post a
concise-but-complete code example that reliably demonstrates the problem.
We have to be able to reproduce the error, and to do so in a way that
isn't dependent on your SMS infrastructure. For example, maybe you can
reproduce the error using a POST to some other web site.
As far as "what encoding should you use" goes...you should use an encoding
that can represent the characters you want to send _and_ which is
supported by the receiving end _and_ you should use it correctly (i.e. the
ContentLength needs to describe the length of the content in bytes, not
characters).
Pete
.
- Follow-Ups:
- Re: Problem with encoding a character
- From: Peter Duniho
- Re: Problem with encoding a character
- References:
- Problem with encoding a character
- From: David
- Re: Problem with encoding a character
- From: Peter Duniho
- Problem with encoding a character
- Prev by Date: Re: How to XmlSerialize an Object that has an interface in it
- Next by Date: Re: isolate text within a string?
- Previous by thread: Re: Problem with encoding a character
- Next by thread: Re: Problem with encoding a character
- Index(es):
Relevant Pages
|