Encoding to be used for ANSI - vb.net - vb.net

What encoding we need to use to save a file as text file(of type ANSI) - While saving the text file ANSI encoding to be used.
What to be used here, not seeing ANSI as an option
vb.net code - what should be given after Encoding.?
My.Computer.FileSystem.WriteAllText("d:\binary.txt", strTemp, True,System.Text.Encoding.

ANSI is not an encoding, it is just a generic name for "not Unicode". You typically use Encoding.Default, the same code page as the one your operating system uses. At least all of the programs that run on that machine can read the file without trouble.

it works for me:
System.Text.Encoding.ASCII

Use a stream writer with System encoding as default:
Dim myfilepath as String = "C:/"
Dim myappendingoption as boolean = True 'True: append text to file, False: overwrite
Dim sw As StreamWriter = New StreamWriter(myfilepath, myappendingoption, System.Text.Encoding.Default)
sw.Write("sometext")
sw.Close()

Related

VB writeline writes corrupt lines to text file

Is it possible for the following code to produce NUL values within a text file?
var temp_str = "123456;1234567"
My.Computer.FileSystem.WriteAllText(Path & "stats.txt", temp_str, False)
It seems simple, but it writes quite often and I'm seeing several files that get accessed by the application that have Strings written to as:
When opening the file with Notepad++. Some other editors show just squares, and it seems like each character is represented by a block/NUL.
So far I've been unable to reproduce this on my test system. I just find the files on a COMX module's file system that's been running in the field and comes back faulty, but I've been seeing enough of these files to make it a problem that needs to be solved.
Does anyone have an idea to prevent this behaviour?
Hard to say what the problem is without more code, but try this if you want to replace the existing contents of the file:
Dim fileContent = "My UTF-8 file contents"
Using writer As IO.StreamWriter = IO.File.CreateText(fullPathIncludingExtension)
writer.Write(fileContent)
End Using
Or this if you want to append UTF-8 text:
Dim newLines = "My UTF-8 content to append"
Using writer As IO.StreamWriter = IO.File.AppendAllText(fullPathIncludingExtension)
writer.Write(fileContent)
End Using
If you want to append Unicode text, you must use a different constructor for StreamWriter:
Using writer As IO.StreamWriter = New IO.StreamWriter("full/path/to/file.txt", True, Text.Encoding.Unicode)
writer.Write(MyContentToAppend)
End Using
Note that the True argument to the constructor specifies that you want to append text.

VB.NET write just in the first line of file

I used over four different methods to get the text from a online text file: www.mysite.com/filedata.txt and overwrite it to another file.
Everything works, but I have only one problem. Everything is written in the first line and not the original format.
Example:
From:
Hello
Hi
Hi
To:
HelloHiHi
Here is just an example of a correct code which I'm using, but it doesn't work:
Using client As New WebClient()
client.DownloadFile("http://www.mystie.com/filedata.txt",
Application.StartupPath & "\file.txt")
End Using
The file is using a different line-break style that is not recognized by the edit control.
There are three different types of line-break styles that are in common usage: the Windows style (CR LF), the Unix style (LF), and the classic Mac style (CR).
Windows controls like the TextBox control naturally require the Windows style, CR LF. The corresponding escape characters for C# would be \r\n; on VB, you use ControlChars.CrLf or vbCrLf. On Unix, LF (\n, or ControlChars.Lf/vbLf) is more commonly encountered. If you are getting a file from an external source, like the Internet, it probably uses Unix-style line breaks, which aren't recognized as line breaks by the Windows TextBox control. The reason it works in what you call "advanced text editors" is that they support all these different styles of line-break characters.
This is exceedingly trivial to fix. Perform a character replacement on the string, replacing LF with CR+LF, before you display it in the TextBox.
' Download the file
Dim path As String = Application.StartupPath & "\file.txt"
Using client As New WebClient()
client.DownloadFile("http://www.mystie.com/filedata.txt", path))
End Using
' Read the file's text in as a string
Dim filedata As String = File.ReadAllText(path)
' Fix up the line endings
filedata = filedata.Replace(ControlChars.Lf, ControlChars.CrLf)
' Display the text in your TextBox
myTextBox.Text = filedata
I managed to solve everything by switching from textbox to richtextbox.

VB.net will not read text file correctly

I've been trying to use StreamReader to read a log file. I cannot verify what it is encoded in, as when I open it in notepad++ and select ANSI encoding, I get this result:
I'm getting the characters needed when using ANSI but they are followed by things like [NULL][EOT][SOH][NUL][SI]
When I try and read the file in VB (using StreamReader or ReadAll) with ANSI encoding selected the resulting string I get back is completely wrong.
How could I read a file like this in VB.net?
You could use the IO.File.ReadAllText("File Location", encoding as System.Text.Encoding) method,
Dim textFromFile as string = IO.File.ReadAllText("C:\Users\Jason\Desktop\login20130417.rdb", System.Text.Encoding.ASCII) 'Or Unicode, UFT32, UFT8, UFT7, BigEndianUnicode or default. Default is ANSI.
If you still don't get the text you need by using the default encoding (ANSI), then you can always try the other 6 different encoding methods.
Update...
It appears that your file is corrupt, using the code below I was able to get a binary representation of whatever is in the file, I got this,
1111111111111101000001110000010000000000000001010000000000010011000000000000100000000000000111100000000000100110000000000011100000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111110100000111000001000000000000000101000000000001001100000000000010000000000000011110000000000010100000000000111111111111110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
The massive amount of null data would suggest that the file is corrupt, which would also explain why we are not getting a lot of data whenever we try to read the file.
The code,
Dim fileData As String = IO.File.ReadAllText("C:\Users\Jason\Desktop\login20130417.rdb")
Dim i As Integer = 0
Dim binaryData As String = ""
Dim ch As String = ""
Do Until i = fileData.Length
ch = fileData.Chars(i)
bin = bin & System.Convert.ToString(AscW(ch), 2).PadLeft(8, "0")
i = i + 1
Loop
As #Daniel A. White suggested in his comment, that file does not appear to be encoded like a "normal" text file. A StreamReader will not work in this situation. I would attempt to use a BinaryReader.
Rdb file? Never heard of it. Quick google makes it less clear - n64 database file, Darkbot, etc...
However considering the name you have, and the general look of the opened file, i would say its a binary file.
If you want to read the file in vb.net you'll need a library of sorts, and i can't help you with one until you are able to shed some light on what the file may be, or what it was created with.

How to read data via streamreader from csv file as it is.. means it should come as string

I am reading csv file via streamreader. Issue is that in csv file if if the data is like "Read" then steamreader the same data is coming as ""Read"". How to remove this extra inverted commas?
It sounds like you're dealing with a CSV that has some (or all) of its fields quoted. If that's the case, I'd recommend using the Microsoft.VisualBasic.FileIO.TextFieldParser (which a lot of people don't seem to know about, and yes despite the namespace it can be used with C#).
Imports Microsoft.VisualBasic.FileIO.TextFieldParser;
Dim csvString As String = "25,""This is text"",abdd,""more quoted text"""
Dim parser as TextFieldParser = New TextFieldParser(New StringReader(csvString))
' You can also read from a file
' Dim parser As TextFieldParser = New TextFieldParser("mycsvfile.csv")
parser.HasFieldsEnclosedInQuotes = True
parser.SetDelimiters(",")
Dim fields As String()
While Not parser.EndOfData
fields = parser.ReadFields()
For Each (field As String in fields)
Console.WriteLine(field)
Next
End While
parser.Close()
The output should be:
25
This is text
abdd
more quoted text
Microsoft.VisualBasic.FileIO.TextFieldParser
To Import this, you'll need to add a reference to Microsoft.VisualBasic to your project.

encoding 737 confused

I am using VB .Net 2008
Why is my conversion from ASCII to 737 (Greek DOS) with the Encoding.Convert command returning readable characters, while an IO.StreamWriter with Encoding.GetEncoding(737) writes a file with non-readable characters?
I am asking this because I want to send row data to a printer which can print Greek as 737.
If I send the result of Encoding.Covert, I get the wrong result, while If I write a file as above and copy it to the printer is ok
Use the GetEncoding method
Dim enc As Encoding = Encoding.GetEncoding(737)
Dim fs As FileStream
fs = File.OpenRead("\737dos.txt")
Dim sr As StreamReader = New StreamReader(fs, enc)