Define A String Literal Containing Non-ASCII Characters?
May 19, 2010
I'm programming in VB.NET using Visual Studio 2008. I need to define a string literal containing the character "÷" equivalent to Chr(247). I understand that internally VS uses UTF-16 encoding, but when the source file is written to disk it contains the single byte value F7 for this character.
This source file is processed by another program that uses UTF-8 encoding by default, so it fails to interpret this character correctly, attempting to combine it with the following single-byte character. What encoding would correctly interpret the single byte F7 as the single character ÷?
Alternatively, is there a way of expressing a non-ASCII literal that uses only ASCII characters - like using some kind of escape sequence?
I'm working on decoding a NMEA sentence that is a compressed 8-bit string. I'm having a very hard time of wrapping my head around the bit manipulation needed to convert this string. If someone could get me started with this it would be great.
So I have an ASP.Net (vb.net) application. It has a textbox and the user is pasting text from Microsoft Word into it. So things like the long dash (charcode 150) are coming through as input. Other examples would be the smart quotes or accented characters. In my app I'm encoding them in xml and passing that to the database as an xml parameter to a sql stored procedure. It gets inserted in the database just as the user entered it.
The problem is the app that reads this data doesn't like these characters. So I need to translate them into the lower ascii (7bit I think) character set. How do I do that? How do I determine what encoding they are in so I can do something like the following. And would just requesting the ASCII equivalent translate them intelligently or do I have to write some code for that?
Also maybe it might be easier to solve this problem in the web page to begin with. When you copy the selection of characters from Word it puts several formats in the clipboard. The straight text one is the one I want. Is there a way to have the html textbox get that text when the user pastes into it? Do I have to set the encoding of the web page somehow?
I'm using this code to return some string from a tcpclient but when the string comes back it has a leading " character in it. I'm trying to remove it but the Len() function is reading the number of bytes instead of the string itself. How can I alter this to give me the length of the string as I would normally use it and not of the array underlying the string itself?
Dim bytes(tcpClient.ReceiveBufferSize) As Byte networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) ' Output the data received from the host to the console.'
[code]....
Len() reports the number of bytes not the number of characters in the string.
How to correctly convert string containing upper ASCII characters to byte array besides looping through each character and filling the array using AscW(chr)?I know I can do something like:
Code: Dim bSourceData As Byte() = System.Text.ASCIIEncoding.GetBytes(sourcedata)
But this only works for lower ascii characters (0-127).Instead of ASCIIEncoding I can specify encoding myself (System.Text.Encoding.Getencoding(encoding).GetBytes(sourcedata)). But I have to specify correct encoding in this case, otherwise most of special characters are converted to "?". What should I do if I don't know the encoding?
I have an app that I have been recoding in vb.net formerly written in VB6. In this app I use some ASCII control codes such as ACK NAK ENQ US RS EOT. The VB6 app uses the CHR() function with the proper ASCII codes to handle these but in recoding I would like to use something more meaningful and descriptive than CHR(4) for example.
I'm using IO.File.ReadAllLines(FileName) to read all lines from text file to array of strings at once. Problem is, text lines include ANSI characters above ASCII value 127 (Scandinavian letters e.g. " (Ascii 196), (Ascii 246) and (Ascii 233). Array is build up nicely, but all chars above ascii value 127 are not shown right. How can I use ANSI character set with .ReadAllLines to correct this problem? In VB6 with "Open Filename For Input As #1 / Line Input #1, txtLine" there wasn't any problem. OBS: This is already solved, found the answer by myself:
Dim myEncoding As Encoding = System.Text.Encoding.GetEncoding(1252) ' Windows-1252 Dim strLibrary As String() = IO.File.ReadAllLines(FileName, myEncoding) Problem was to find right character set, which was Windows-1251 (ISO-8859-1)
I want to explicitly inform my user that they are not allowed to use any characters from the extended ascii character set (128-255). When I try to create a string of these values using the following [Code] It outputs them fine, with the exception of a bunch of blanks in certain areas(I am assuming these characters are unprintable), but I noticed that when I hover over the value of sVal in the VS, the tooltip/quickview of the value is written nicely on one line. Any ideas how to remove characters that would appear to be blank spaces (unprintable) when outputting this list?
I am using StreamWriter and StreamReader in VB.NET 2008 Express to read and write ASCII text files. When I create the file and later read it, there is no problem, because I use System.Text.Encoding.UTF8 on both the write and read sides, so extended text is handled without problem. But sometimes, I have text files come in that are just straight 8 bit ASCII without the Unicode BOM... and they get a lot of junk when I try to read in anything with extended ASCII characters in it. It seems like the 8 bit extended characters are translated into multi-byte codes, and since they are filenames, of course, that doesn't work. Since the filenames just have straight 8 bit ASCII filenames. I have tried all sorts of encodings, and nothing seems to work.
The most common character that causes a problem is an "a" ... it is used in a lot of proper names. The funny thing is that sometimes is seems to workout... is there a way to read these types of text files? Some way to just tell StreamReader not to decode the text, just treat it as straight plain 8 bit ASCII text (with the old IBM PC mapping, I think). The one thing that works is to manually edit the input, replacing the extended characters with their un-accented partner and then renaming the files to match the new spelling. Maybe I should just go to read them as byte input and breaking the lines apart in my code.
I'm an undergraduate student from Singapore University, would like to enquire you on how to convert character codes to ASCII codes using visual basic. regarding the codes on how to build it as I need it for my semestral project
I have made an application in VB 6.0.In this application ,i am connecting one controller through serial port to laptop.I have used MSOMM control for this purpose.Controller is sending data as a string .On VB 6.0 applicaton in laptop ,i am getting data displayed in one text boxall in ASCII code/characters.Total chatacters in string are 61.My problem is this that all 61 characters are comming in one text box.I want thateach character should come in seperate text box so that i can be able to display them individually,i.e. 61 characters and 61 text boxes.
i have a problem a in vb.net in Windows Vista Basic environment, while using the chr(0) it gives an empty string, while in windows XP chr(0) gives the following character am wonderign why in windows vista it can't result to the same thing actually it amounts to NOTHING as the result.
I have a program written in VB.NET and I have a textbox for the RFID tag (which is in ASCII format) and then convert it to a simple text format to be saved to my database. How can I convert ASCII to plain text to save to my database?
If I needed to escape a double quote character within a string literal I'd use two consecutive double quotes as follows:
Dim name = "Chuck ""Iceman"" Liddell"
However, it doesn't seem like consecutive # works the same way. The compiler is expecting a compiler directive to follow the # character, even when its enclosed in double quotes. How can tell the compiler that I want a # character in my string?
EDIT: as a few of the answers below point out, # is not a reserved character. I closed my solution in Visual Studio and re-opened it and no longer got the compiler squiggles warning me.
This might just be a matter of taste, but I'm wondering if there's a "recommended" way to compare a variable of type Object (which might be Nothing or have a different dynamic type than String) to a string literal in VB.NET. The following options obviously won't work:
If myObject = "Hello World" Then ... -- won't compile If myObject Is "Hello World" Then ... -- tests for reference equality, which is just wrong If myObject.Equals("Hello World") Then ... -- throws an exception if myObject is Nothing If DirectCast(myObject, String) = "Hello World" Then ... -- throws an exception if myObject is not a string
Thus, the only (simple, single-expression) solution I could find is to use
If "Hello World".Equals(myObject) Then ...
which looks a bit clumsy to me. Did I miss any obvious alternative, other than doing type checks or explicit checks for Nothing?(Of course, we're talking about Option Strict On.)
I need to write an application for receiving data (ascii characters) from microcontroller through the serial port in three separate parts. I've created three RichTextBoxes, but I do not know which commands I need to type. In first textbox I need to receive one byte... next six bytes need to be placed in second text box, and finally last seven bytes need to be placed in third textbox.
I have a string of characters, but I would like to have a string of hexdecimal characters where the hexadecimal characters are converted by turning the original characters into integers and then those integers into hexadecimal characters. How do I do that?
I am trying to update an Oracle Database record and i keep getting this error:
ORA-01704: string literal too long 5
I looked up that error and it seems that i have a limit of 4000 charters since i am using Oracle 10g. However, the prgblem is that its the same exact data i am putting back into that record so that is why i am unsure as to why its giving me that error for the same amount of data i took out of it.
Here is my update code:
Dim myCommand As New OracleCommand() Dim ra As Integer Try
My app has text boxes to accept input from user to questions shown on labels. When the user input is valid, a literal is added to a string incorporating the user input. If the user doesn't input anything or if user inputs "no" or "None" I want the literal and the user input to not add to my string. Make any sense? See my code below:
Not sure if too many people know this, but the following line will cause an error:
GroupName.Substring(0, 3) = "jt_"
....if the length of GroupName is less than 3 characters. I always thought it would simply return whatever characters in GroupName, but no, it errors. I must be thinking of the old VB6 days.So, I now have to change the code to:
If (GroupName.Length > 2) Then If (GroupName.Substring(0, 3) = "jt_") Then
Note that the two comparisons need to be on separate lines. If they are on the same line, such as:
If (GroupName.Length > 2) and (GroupName.Substring(0, 3) = "jt_") Then then the code will still fail as the length command is executed at the same time as the substring command- which will cause the error when the GroupName length is less than 3.Just thought that those of us not aware of this should be!
I want to have an input from the user to define the font of a rich text box... the only problem is the only way I know how is to use a string... When I use a string it give the error of:
"An unhandled exception of type 'System.InvalidCastException' occurred in PWT Notepadd.exe
Additional information: Unable to cast object of type 'System.String' to type 'System.Drawing.Font'."
I parse time from string. The time in string is always GMT (you may say it equals UTC).Now I need to convert this time to local time, but there is a catch!For some reason the time parsed from string is being assumed as local time. I need to tell the bloody machine that this time is UTC/GMT, but not local.
Some examples:My string looks like that:
06 Apr 2012 16:27:00 GMT
I parse it like that (eventtime is my string - like above):
vb Dim eventtimeobject As DateTime = DateTime.Parse(eventtime) Dim eventtimefriendly As String eventtimefriendly = String.Format("{0:dd MMM yyyy HH:mm}" + " GMT", eventtimeobject)
and now if I would like to convert it to local time nothing will happen as it is assumed that the above time is actually local.obviously if I tell it to convert the above time to UTC/GMT it will change it, as it does not know what this time is in GMT already.How do I do it? How to I tell the computer that it is dealing with GMT already?
I am having a bit of trouble converting a single stored in a string as four hex values. I believe my problem stems from some Unicode hex values not matching the corresponding ASCII hex value above 0x7F (127). For example, I have the following single stored in a string; "518.42" or 0x44019AE1. The char that would contain 0x9A if the data type were ASCII contains U+0161 which will not convert properly to a byte array. My question is: Is there any way to force a string to be of ASCII rather than Unicode? Or maybe there are other recommendations? For reference I have tried both of the following. The first throws a format exception and the second converts to the wrong single.
Private Function ConvertHexToSingle(ByVal hexValue As String) As Single Try Dim iInputIndex As Integer = 0 Dim iOutputIndex As Integer = 0