Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EncodeString()

int System.Net.Mime.ByteEncoder.EncodeString ( string value,
Encoding encoding )
inlineinherited

Implements System.Net.Mime.IByteEncoder.

Definition at line 46 of file ByteEncoder.cs.

47 {
48 if (encoding == Encoding.Latin1)
49 {
50 byte[] bytes = encoding.GetBytes(value);
51 return EncodeBytes(bytes, 0, bytes.Length, dontDeferFinalBytes: true, shouldAppendSpaceToCRLF: true);
52 }
53 WriteState.AppendHeader();
54 bool hasSpecialEncodingForCRLF = HasSpecialEncodingForCRLF;
55 int num = 0;
56 byte[] bytes2 = new byte[encoding.GetMaxByteCount(2)];
57 for (int i = 0; i < value.Length; i++)
58 {
59 int codepointSize = GetCodepointSize(value, i);
60 int bytes3 = encoding.GetBytes(value, i, codepointSize, bytes2, 0);
61 if (codepointSize == 2)
62 {
63 i++;
64 }
65 if (LineBreakNeeded(bytes2, bytes3))
66 {
68 WriteState.AppendCRLF(includeSpace: true);
69 }
70 if (hasSpecialEncodingForCRLF && IsCRLF(bytes2, bytes3))
71 {
73 }
74 else
75 {
76 AppendEncodedCodepoint(bytes2, bytes3);
77 }
78 num += bytes3;
79 }
81 WriteState.AppendFooter();
82 return num;
83 }
int EncodeBytes(byte[] buffer, int offset, int count, bool dontDeferFinalBytes, bool shouldAppendSpaceToCRLF)
void AppendEncodedCodepoint(byte[] bytes, int count)
int GetCodepointSize(string value, int i)
bool IsCRLF(byte[] bytes, int count)
static Encoding Latin1
Definition Encoding.cs:513
virtual byte[] GetBytes(char[] chars)
Definition Encoding.cs:781
int GetMaxByteCount(int charCount)

References System.Net.Mime.ByteEncoder.AppendEncodedCodepoint(), System.Net.Mime.ByteEncoder.AppendEncodedCRLF(), System.Net.Mime.ByteEncoder.AppendPadding(), System.bytes, System.Net.Mime.ByteEncoder.EncodeBytes(), System.Text.Encoding.GetBytes(), System.Net.Mime.ByteEncoder.GetCodepointSize(), System.Text.Encoding.GetMaxByteCount(), System.Net.Mime.ByteEncoder.HasSpecialEncodingForCRLF, System.Net.Mime.ByteEncoder.IsCRLF(), System.Text.Encoding.Latin1, System.Net.Mime.ByteEncoder.LineBreakNeeded(), and System.value.