Jak zakodować ciąg znaków
Mam łańcuch URL (NSString
) ze spacjami i znakami &
. Jak kodować adres URL całego ciągu znaków (w tym znak &
ampersand i spacje)?
23 answers
Niestety, nie zawsze działa w 100%. Koduje znaki inne niż URL, ale pozostawia tylko znaki zarezerwowane (takie jak slash /
i ampersand &
). Wygląda na to, że jest to błąd , którego Apple jest świadomy, ale ponieważ jeszcze go nie naprawili, używam tej kategorii do kodowania adresu URL:
@implementation NSString (NSString_Extended)
- (NSString *)urlencode {
NSMutableString *output = [NSMutableString string];
const unsigned char *source = (const unsigned char *)[self UTF8String];
int sourceLen = strlen((const char *)source);
for (int i = 0; i < sourceLen; ++i) {
const unsigned char thisChar = source[i];
if (thisChar == ' '){
[output appendString:@"+"];
} else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
(thisChar >= 'a' && thisChar <= 'z') ||
(thisChar >= 'A' && thisChar <= 'Z') ||
(thisChar >= '0' && thisChar <= '9')) {
[output appendFormat:@"%c", thisChar];
} else {
[output appendFormat:@"%%%02X", thisChar];
}
}
return output;
}
Używane w ten sposób:
NSString *urlEncodedString = [@"SOME_URL_GOES_HERE" urlencode];
// Or, with an already existing string:
NSString *someUrlString = @"someURL";
NSString *encodedUrlStr = [someUrlString urlencode];
To również działa:
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)unencodedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
Dobra lektura na ten temat:
Objective-C iPhone procent koduje ciąg znaków?
Objective - C i Swift URL encoding
Http://cybersam.com/programming/proper-url-percent-encoding-in-ios
https://devforums.apple.com/message/15674#15674
http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:01
To może być pomocne
NSString *sampleUrl = @"http://www.google.com/search.jsp?params=Java Developer";
NSString* encodedUrl = [sampleUrl stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];
W przypadku iOS 7 + zalecany sposób to:
NSString* encodedUrl = [sampleUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
Możesz wybrać dozwolony zestaw znaków zgodnie z wymaganiami komponentu URL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-12 11:14:49
Nowe API zostały dodane od momentu wybrania odpowiedzi; możesz teraz używać NSURLUtilities. Ponieważ różne części adresów URL zezwalają na różne znaki, użyj odpowiedniego zestawu znaków. Poniższy przykład koduje w celu włączenia do łańcucha zapytania:
encodedString = [myString stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet];
Aby skonwertować '&', musisz usunąć go z zestawu zapytań url lub użyć innego zestawu, ponieważ ' & ' jest dozwolone w zapytaniu URL:
NSMutableCharacterSet *chars = NSCharacterSet.URLQueryAllowedCharacterSet.mutableCopy;
[chars removeCharactersInRange:NSMakeRange('&', 1)]; // %26
encodedString = [myString stringByAddingPercentEncodingWithAllowedCharacters:chars];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-18 11:11:30
Przykład Swift 2.0 (Kompatybilny z iOS 9)
extension String {
func stringByURLEncoding() -> String? {
let characters = NSCharacterSet.URLQueryAllowedCharacterSet().mutableCopy() as! NSMutableCharacterSet
characters.removeCharactersInString("&")
guard let encodedString = self.stringByAddingPercentEncodingWithAllowedCharacters(characters) else {
return nil
}
return encodedString
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-20 21:31:59
Ios 7 update
NSString *encode = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSString *decode = [encode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-19 22:07:48
Zdecydowałem się użyć CFURLCreateStringByAddingPercentEscapes
wywołania, jak podano przez zaakceptowaną odpowiedź, jednak w najnowszej wersji XCode (i IOS), spowodowało to błąd, więc zamiast tego użyłem następującego:
NSString *apiKeyRaw = @"79b|7Qd.jW=])(fv|M&W0O|3CENnrbNh4}2E|-)J*BCjCMrWy%dSfGs#A6N38Fo~";
NSString *apiKey = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)apiKeyRaw, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-24 19:14:01
Oto gotowe do produkcji elastyczne podejście w Swift 5.x :
public extension CharacterSet {
static let urlQueryParameterAllowed = CharacterSet.urlQueryAllowed.subtracting(CharacterSet(charactersIn: "&?"))
static let urlQueryDenied = CharacterSet.urlQueryAllowed.inverted()
static let urlQueryKeyValueDenied = CharacterSet.urlQueryParameterAllowed.inverted()
static let urlPathDenied = CharacterSet.urlPathAllowed.inverted()
static let urlFragmentDenied = CharacterSet.urlFragmentAllowed.inverted()
static let urlHostDenied = CharacterSet.urlHostAllowed.inverted()
static let urlDenied = CharacterSet.urlQueryDenied
.union(.urlQueryKeyValueDenied)
.union(.urlPathDenied)
.union(.urlFragmentDenied)
.union(.urlHostDenied)
func inverted() -> CharacterSet {
var copy = self
copy.invert()
return copy
}
}
public extension String {
func urlEncoded(denying deniedCharacters: CharacterSet = .urlDenied) -> String? {
return addingPercentEncoding(withAllowedCharacters: deniedCharacters.inverted())
}
}
Przykładowe użycie:
print("Hello, World!".urlEncoded()!)
print("You&Me?".urlEncoded()!)
print("#Blessed 100%".urlEncoded()!)
print("Pride and Prejudice".urlEncoded(denying: .uppercaseLetters)!)
Wyjście:
Hello,%20World!
You%26Me%3F
%23Blessed%20100%25
%50ride and %50rejudice
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-07 06:20:25
Spróbuj użyć stringByAddingPercentEncodingWithAllowedCharacters
metoda z [NSCharacterSet URLUserAllowedCharacterSet]
obejmie wszystkie sprawy
Objective C
NSString *value = @"Test / Test";
value = [value stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLUserAllowedCharacterSet]];
Swift
var value = "Test / Test"
value.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLUserAllowedCharacterSet())
Wyjście
Test%20%2F%20Test
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-19 13:32:43
Po przeczytaniu wszystkich odpowiedzi na ten temat i (źle ) zaakceptowanych, chcę dodać swój wkład.
Jeśli celem jest iOS7+, a w 2017 powinien, ponieważ XCode naprawdę trudno jest zapewnić kompatybilność pod iOS8, najlepszym sposobem, thread bezpieczny, szybki, amd będzie pełne wsparcie UTF-8, aby to zrobić to:
(Objective C code)
@implementation NSString (NSString_urlencoding)
- (NSString *)urlencode {
static NSMutableCharacterSet *chars = nil;
static dispatch_once_t pred;
if (chars)
return [self stringByAddingPercentEncodingWithAllowedCharacters:chars];
// to be thread safe
dispatch_once(&pred, ^{
chars = NSCharacterSet.URLQueryAllowedCharacterSet.mutableCopy;
[chars removeCharactersInString:@"!*'();:@&=+$,/?%#[]"];
});
return [self stringByAddingPercentEncodingWithAllowedCharacters:chars];
}
@end
To rozszerzy NSString, wyłączy zakazane znaki RFC, będzie obsługiwał znaki UTF-8 i pozwoli na używanie rzeczy like:
NSString *myusername = "I'm[evil]&want(to)break!!!$->àéìòù";
NSLog(@"Source: %@ -> Dest: %@", myusername, [myusername urlencode]);
Który zostanie wydrukowany na konsoli debugowania:
Źródło: I ' m [evil] & want (to) break!!!$- >àéìòù - > Dest: I%27m%5Bevil%5D%26want%28to%29break%21%21%21%24-%3E%C3%A0%C3%A9%C3%AC%C3%B2%C3 % B9
... zwróć również uwagę na użycie dispatch_once, aby uniknąć wielu inicjalizacji w środowiskach wielowątkowych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 12:47:16
Ten kod pomógł mi w kodowaniu znaków specjalnych
NSString* encPassword = [password stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet alphanumericCharacterSet]];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-01 00:36:21
Użyj NSURLComponents do kodowania parametrów HTTP GET:
var urlComponents = NSURLComponents(string: "https://www.google.de/maps/")!
urlComponents.queryItems = [
NSURLQueryItem(name: "q", value: String(51.500833)+","+String(-0.141944)),
NSURLQueryItem(name: "z", value: String(6))
]
urlComponents.URL // returns https://www.google.de/maps/?q=51.500833,-0.141944&z=6
Http://www.ralfebert.de/snippets/ios/encoding-nsurl-get-parameters/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 12:13:29
Kod Swift na podstawie odpowiedzi chown w tym wątku.
extension String {
func urlEncode() -> String {
return CFURLCreateStringByAddingPercentEscapes(
nil,
self,
nil,
"!*'();:@&=+$,/?%#[]",
CFStringBuiltInEncodings.UTF8.rawValue
)
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:01
W Swift 3 , wypróbuj poniżej:
let stringURL = "YOUR URL TO BE ENCODE";
let encodedURLString = stringURL.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
print(encodedURLString)
Ponieważ stringByAddingPercentEscapesUsingEncoding
koduje znaki inne niż URL, ale pozostawia znaki zarezerwowane( jak !*'();:@&=+$,/?%#[]
), możesz zakodować adres url w następujący sposób:
let stringURL = "YOUR URL TO BE ENCODE";
let characterSetTobeAllowed = (CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[] ").inverted)
if let encodedURLString = stringURL.addingPercentEncoding(withAllowedCharacters: characterSetTobeAllowed) {
print(encodedURLString)
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-19 11:17:58
W swift 3:
// exclude alpha and numeric == "full" encoding
stringUrl = stringUrl.addingPercentEncoding(withAllowedCharacters: .alphanumerics)!;
// exclude hostname and symbols &,/ and etc
stringUrl = stringUrl.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-30 11:58:43
[[1]} Rada Apple, w Uwagach do wydania 10.11, brzmi:
Jeśli chcesz zakodować cały ciąg URL, możesz użyć tego kodu do zakodowania NSString, który ma być adresem URL (w urlStringToEncode):
NSString *percentEncodedURLString =
[[NSURL URLWithDataRepresentation:[urlStringToEncode dataUsingEncoding:NSUTF8StringEncoding] relativeToURL:nil] relativeString];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-26 06:23:43
W moim przypadku gdzie ostatnim składnikiem były litery arabskie zrobiłem w Swift 2.2
:
extension String {
func encodeUTF8() -> String? {
//If I can create an NSURL out of the string nothing is wrong with it
if let _ = NSURL(string: self) {
return self
}
//Get the last component from the string this will return subSequence
let optionalLastComponent = self.characters.split { $0 == "/" }.last
if let lastComponent = optionalLastComponent {
//Get the string from the sub sequence by mapping the characters to [String] then reduce the array to String
let lastComponentAsString = lastComponent.map { String($0) }.reduce("", combine: +)
//Get the range of the last component
if let rangeOfLastComponent = self.rangeOfString(lastComponentAsString) {
//Get the string without its last component
let stringWithoutLastComponent = self.substringToIndex(rangeOfLastComponent.startIndex)
//Encode the last component
if let lastComponentEncoded = lastComponentAsString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet()) {
//Finally append the original string (without its last component) to the encoded part (encoded last component)
let encodedString = stringWithoutLastComponent + lastComponentEncoded
//Return the string (original string/encoded string)
return encodedString
}
}
}
return nil;
}
}
Użycie:
let stringURL = "http://xxx.dev.com/endpoint/nonLatinCharacters"
if let encodedStringURL = stringURL.encodeUTF8() {
if let url = NSURL(string: encodedStringURL) {
...
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-21 19:30:55
-(NSString *)encodeUrlString:(NSString *)string {
return CFBridgingRelease(
CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(__bridge CFStringRef)string,
NULL,
CFSTR("!*'();:@&=+$,/?%#[]"),
kCFStringEncodingUTF8)
);
}
Zgodnie z poniższy blog
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-01 00:36:47
Tak wiele odpowiedzi, ale nie działa dla mnie, więc próbowałem następujące:
fun simpleServiceCall(for serviceUrl: String, appendToUrl: String) {
let urlString: String = serviceUrl + appendToUrl.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!
let finalUrl = URL(string: urlString)!
//continue to execute your service call...
}
Mam nadzieję, że to komuś pomoże. dziękiWarning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-17 11:29:01
Dla poszczególnych parametrów zapytania zakodowanych w formularzu www zrobiłem kategorię na NSString:
- (NSString*)WWWFormEncoded{
NSMutableCharacterSet *chars = NSCharacterSet.alphanumericCharacterSet.mutableCopy;
[chars addCharactersInString:@" "];
NSString* encodedString = [self stringByAddingPercentEncodingWithAllowedCharacters:chars];
encodedString = [encodedString stringByReplacingOccurrencesOfString:@" " withString:@"+"];
return encodedString;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 21:01:36
//to bez testu
NSMutableCharacterSet* set = [[NSCharacterSet alphanumericCharacterSet] mutableCopy];
[set addCharactersInString:@"-_.~"];
NSString *encode = [test stringByAddingPercentEncodingWithAllowedCharacters:set];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 12:12:51
Miałem podobny problem z przekazaniem złożonych łańcuchów jako parametru POST. Moje ciągi mogą zawierać Azjatyckie znaki, spacje, cudzysłowy i wszelkiego rodzaju znaki specjalne. Rozwiązaniem, które ostatecznie znalazłem, było przekonwertowanie mojego ciągu znaków na pasujące serie unicodów ,np. " Hu0040Hu0020Hu03f5...."używając [NSString stringWithFormat:@ "Hu%04x", [string characterAtIndex: i]], aby uzyskać Unicode z każdego znaku w oryginalnym łańcuchu. To samo można zrobić w Javie.
Ten ciąg może być bezpiecznie przekazany jako parametr POST.
Po stronie serwera (PHP) zmieniam wszystkie "H" na "\" i przekazuję wynikowy ciąg do json_decode. Ostatnim krokiem jest uniknięcie pojedynczych cudzysłowów przed zapisaniem ciągu znaków do MySQL.
W ten sposób mogę przechowywać dowolny ciąg UTF8 na moim serwerze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-26 07:15:11
Ten działa dla mnie.
func stringByAddingPercentEncodingForFormData(plusForSpace: Bool=false) -> String? {
let unreserved = "*-._"
let allowed = NSMutableCharacterSet.alphanumericCharacterSet()
allowed.addCharactersInString(unreserved)
if plusForSpace {
allowed.addCharactersInString(" ")
}
var encoded = stringByAddingPercentEncodingWithAllowedCharacters(allowed)
if plusForSpace {
encoded = encoded?.stringByReplacingOccurrencesOfString(" ",
withString: "+")
}
return encoded
}
Znalazłem powyższą funkcję z tego linku: http://useyourloaf.com/blog/how-to-percent-encode-a-url-string/
Możesz również używać tej funkcji z rozszerzeniem swift. Proszę dać mi znać, jeśli jest jakiś problem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 09:16:18
Dla funkcji PHP urlencode kodowanie NSString do CString z UTF8Encode, jak [NSString UTF8String] nie działało.
Oto mój custom objective C NSString+ASCII Kategoria z działa ze wszystkimi wartościami ASCII 0..255
Header
#import <Cocoa/Cocoa.h>
@interface NSString (ASCIIEncode)
- (const char*)ASCIIEncode;
@end
Realizacja
#import "NSString+ASCIIEncode.h"
@implementation NSString (ASCIIEncode)
- (const char*)ASCIIEncode {
static char output[1024];
// https://tools.piex.at/ascii-tabelle/
// https://www.ionos.de/digitalguide/server/knowhow/ascii-american-standard-code-for-information-interchange/
NSMutableArray *ascii = [NSMutableArray new];
// Hex
// 000 Dez Hex
[ascii addObject:@"\0"]; // 000 000 NUL
[ascii addObject:@( 1)]; // 001 001 SOH
[ascii addObject:@( 2)]; // 002 002 STX
[ascii addObject:@( 3)]; // 003 003 ETX
[ascii addObject:@( 4)]; // 004 004 EOT
[ascii addObject:@( 5)]; // 005 005 ENQ
[ascii addObject:@( 6)]; // 006 006 ACK
[ascii addObject:@"\a"]; // 007 007 BEL
[ascii addObject:@"\b"]; // 008 008 BS
[ascii addObject:@( 9)]; // 009 009 TAB
[ascii addObject:@"\n"]; // 010 00A LF
[ascii addObject:@(11)]; // 011 00B VT
[ascii addObject:@(12)]; // 012 00C FF
[ascii addObject:@"\r"]; // 013 00D CR
[ascii addObject:@(14)]; // 014 00E SO
[ascii addObject:@(15)]; // 015 00F NAK
// 010
[ascii addObject:@(16)]; // 016 010 DLE
[ascii addObject:@(17)]; // 017 011 DC1
[ascii addObject:@(18)]; // 018 012 DC2
[ascii addObject:@(19)]; // 019 013 DC3
[ascii addObject:@(20)]; // 020 014 DC4
[ascii addObject:@(21)]; // 021 015 NAK
[ascii addObject:@(22)]; // 022 016 SYN
[ascii addObject:@(23)]; // 023 017 ETB
[ascii addObject:@(24)]; // 024 018 CAN
[ascii addObject:@(25)]; // 025 019 EM
[ascii addObject:@(26)]; // 026 01A SUB
[ascii addObject:@(27)]; // 027 01B ESC
[ascii addObject:@(28)]; // 028 01C FS
[ascii addObject:@(29)]; // 029 01D GS
[ascii addObject:@(30)]; // 030 01E RS
[ascii addObject:@(31)]; // 031 01F US
// 020
[ascii addObject:@" "]; // 032 020 Space
[ascii addObject:@"!"]; // 033 021
[ascii addObject:@"\""]; // 034 022
[ascii addObject:@"#"]; // 035 023
[ascii addObject:@"$"]; // 036 024
[ascii addObject:@"%"]; // 037 025
[ascii addObject:@"&"]; // 038 026
[ascii addObject:@"'"]; // 039 027
[ascii addObject:@"("]; // 040 028
[ascii addObject:@")"]; // 041 029
[ascii addObject:@"*"]; // 042 02A
[ascii addObject:@"+"]; // 043 02B
[ascii addObject:@","]; // 044 02C
[ascii addObject:@"-"]; // 045 02D
[ascii addObject:@"."]; // 046 02E
[ascii addObject:@"/"]; // 047 02F
// 030
[ascii addObject:@"0"]; // 048 030
[ascii addObject:@"1"]; // 049 031
[ascii addObject:@"2"]; // 050 032
[ascii addObject:@"3"]; // 051 033
[ascii addObject:@"4"]; // 052 034
[ascii addObject:@"5"]; // 053 035
[ascii addObject:@"6"]; // 054 036
[ascii addObject:@"7"]; // 055 037
[ascii addObject:@"8"]; // 056 038
[ascii addObject:@"9"]; // 057 039
[ascii addObject:@":"]; // 058 03A
[ascii addObject:@";"]; // 059 03B
[ascii addObject:@"<"]; // 060 03C
[ascii addObject:@"="]; // 061 03D
[ascii addObject:@">"]; // 062 03E
[ascii addObject:@"?"]; // 063 03F
// 040
[ascii addObject:@"@"]; // 064 040
[ascii addObject:@"A"]; // 065 041
[ascii addObject:@"B"]; // 066 042
[ascii addObject:@"C"]; // 067 043
[ascii addObject:@"D"]; // 068 044
[ascii addObject:@"E"]; // 069 045
[ascii addObject:@"F"]; // 070 046
[ascii addObject:@"G"]; // 071 047
[ascii addObject:@"H"]; // 072 048
[ascii addObject:@"I"]; // 073 049
[ascii addObject:@"J"]; // 074 04A
[ascii addObject:@"K"]; // 075 04B
[ascii addObject:@"L"]; // 076 04C
[ascii addObject:@"M"]; // 077 04D
[ascii addObject:@"N"]; // 078 04E
[ascii addObject:@"O"]; // 079 04F
// 050
[ascii addObject:@"P"]; // 080 050
[ascii addObject:@"Q"]; // 081 051
[ascii addObject:@"R"]; // 082 052
[ascii addObject:@"S"]; // 083 053
[ascii addObject:@"T"]; // 084 054
[ascii addObject:@"U"]; // 085 055
[ascii addObject:@"V"]; // 086 056
[ascii addObject:@"W"]; // 087 057
[ascii addObject:@"X"]; // 088 058
[ascii addObject:@"Y"]; // 089 059
[ascii addObject:@"Z"]; // 090 05A
[ascii addObject:@"["]; // 091 05B
[ascii addObject:@"\\"]; // 092 05C
[ascii addObject:@"]"]; // 093 05D
[ascii addObject:@"^"]; // 094 05E
[ascii addObject:@"_"]; // 095 05F
// 060
[ascii addObject:@"`"]; // 096 060
[ascii addObject:@"a"]; // 097 061
[ascii addObject:@"b"]; // 098 062
[ascii addObject:@"c"]; // 099 063
[ascii addObject:@"d"]; // 100 064
[ascii addObject:@"e"]; // 101 065
[ascii addObject:@"f"]; // 102 066
[ascii addObject:@"g"]; // 103 067
[ascii addObject:@"h"]; // 104 068
[ascii addObject:@"i"]; // 105 069
[ascii addObject:@"j"]; // 106 06A
[ascii addObject:@"k"]; // 107 06B
[ascii addObject:@"l"]; // 108 06C
[ascii addObject:@"m"]; // 109 06D
[ascii addObject:@"n"]; // 110 06E
[ascii addObject:@"o"]; // 111 06F
// 070
[ascii addObject:@"p"]; // 112 070
[ascii addObject:@"q"]; // 113 071
[ascii addObject:@"r"]; // 114 072
[ascii addObject:@"s"]; // 115 073
[ascii addObject:@"t"]; // 116 074
[ascii addObject:@"u"]; // 117 075
[ascii addObject:@"v"]; // 118 076
[ascii addObject:@"w"]; // 119 077
[ascii addObject:@"x"]; // 120 078
[ascii addObject:@"y"]; // 121 079
[ascii addObject:@"z"]; // 122 07A
[ascii addObject:@"{"]; // 123 07B
[ascii addObject:@"|"]; // 124 07C
[ascii addObject:@"}"]; // 125 07D
[ascii addObject:@"~"]; // 126 07E
[ascii addObject:@(127)];// 127 07F DEL
// 080
[ascii addObject:@"€"]; // 128 080
[ascii addObject:@(129)];// 129 081
[ascii addObject:@"‚"]; // 130 082
[ascii addObject:@"ƒ"]; // 131 083
[ascii addObject:@"„"]; // 132 084
[ascii addObject:@"…"]; // 133 085
[ascii addObject:@"†"]; // 134 086
[ascii addObject:@"‡"]; // 135 087
[ascii addObject:@"ˆ"]; // 136 088
[ascii addObject:@"‰"]; // 137 089
[ascii addObject:@"Š"]; // 138 08A
[ascii addObject:@"‹"]; // 139 08B
[ascii addObject:@"Œ"]; // 140 08C
[ascii addObject:@(141)];// 141 08D
[ascii addObject:@"Ž"]; // 142 08E
[ascii addObject:@(143)]; // 143 08F
// 090
[ascii addObject:@(144)];// 144 090
[ascii addObject:@"‘"]; // 145 091
[ascii addObject:@"’"]; // 146 092
[ascii addObject:@"“"]; // 147 093
[ascii addObject:@"”"]; // 148 094
[ascii addObject:@"•"]; // 149 095
[ascii addObject:@"–"]; // 150 096
[ascii addObject:@"—"]; // 151 097
[ascii addObject:@"˜"]; // 152 098
[ascii addObject:@"™"]; // 153 099
[ascii addObject:@"š"]; // 154 09A
[ascii addObject:@"›"]; // 155 09B
[ascii addObject:@"œ"]; // 156 09C
[ascii addObject:@(157)];// 157 09D
[ascii addObject:@"ž"]; // 158 09E
[ascii addObject:@"Ÿ"]; // 159 09F
// 0A0
[ascii addObject:@(160)];// 160 0A0
[ascii addObject:@"¡"]; // 161 0A1
[ascii addObject:@"¢"]; // 162 0A2
[ascii addObject:@"£"]; // 163 0A3
[ascii addObject:@"¤"]; // 164 0A4
[ascii addObject:@"¥"]; // 165 0A5
[ascii addObject:@"¦"]; // 166 0A6
[ascii addObject:@"§"]; // 167 0A7
[ascii addObject:@"¨"]; // 168 0A8
[ascii addObject:@"©"]; // 169 0A9
[ascii addObject:@"ª"]; // 170 0AA
[ascii addObject:@"«"]; // 171 0AB
[ascii addObject:@"¬"]; // 172 0AC
[ascii addObject:@(173)];// 173 0AD
[ascii addObject:@"®"]; // 174 0AE
[ascii addObject:@"¯"]; // 175 0AF
// 0B0
[ascii addObject:@"°"]; // 176 0B0
[ascii addObject:@"±"]; // 177 0B1
[ascii addObject:@"²"]; // 178 0B2
[ascii addObject:@"³"]; // 179 0B3
[ascii addObject:@"´"]; // 180 0B4
[ascii addObject:@"µ"]; // 181 0B5
[ascii addObject:@"¶"]; // 182 0B6
[ascii addObject:@"·"]; // 183 0B7
[ascii addObject:@"¸"]; // 184 0B8
[ascii addObject:@"¹"]; // 185 0B9
[ascii addObject:@"º"]; // 186 0BA
[ascii addObject:@"»"]; // 187 0BB
[ascii addObject:@"¼"]; // 188 0BC
[ascii addObject:@"½"]; // 189 0BD
[ascii addObject:@"¾"]; // 190 0BE
[ascii addObject:@"¿"]; // 191 0BF
// 0C0
[ascii addObject:@"À"]; // 192 0C0
[ascii addObject:@"Á"]; // 193 0C1
[ascii addObject:@"Â"]; // 194 0C2
[ascii addObject:@"Ã"]; // 195 0C3
[ascii addObject:@"Ä"]; // 196 0C4
[ascii addObject:@"Å"]; // 197 0C5
[ascii addObject:@"Æ"]; // 198 0C6
[ascii addObject:@"Ç"]; // 199 0C7
[ascii addObject:@"È"]; // 200 0C8
[ascii addObject:@"É"]; // 201 0C9
[ascii addObject:@"Ê"]; // 202 0CA
[ascii addObject:@"Ë"]; // 203 0CB
[ascii addObject:@"Ì"]; // 204 0CC
[ascii addObject:@"Í"]; // 205 0CD
[ascii addObject:@"Î"]; // 206 0CE
[ascii addObject:@"Ï"]; // 207 0CF
// 0D0
[ascii addObject:@"Ð"]; // 208 0D0
[ascii addObject:@"Ñ"]; // 209 0D1
[ascii addObject:@"Ò"]; // 210 0D2
[ascii addObject:@"Ó"]; // 211 0D3
[ascii addObject:@"Ô"]; // 212 0D4
[ascii addObject:@"Õ"]; // 213 0D5
[ascii addObject:@"Ö"]; // 214 0D6
[ascii addObject:@"×"]; // 215 0D7
[ascii addObject:@"Ø"]; // 216 0D8
[ascii addObject:@"Ù"]; // 217 0D9
[ascii addObject:@"Ú"]; // 218 0DA
[ascii addObject:@"Û"]; // 219 0DB
[ascii addObject:@"Ü"]; // 220 0DC
[ascii addObject:@"Ý"]; // 221 0DD
[ascii addObject:@"Þ"]; // 222 0DE
[ascii addObject:@"ß"]; // 223 0DF
// 0E0
[ascii addObject:@"à"]; // 224 0E0
[ascii addObject:@"á"]; // 225 0E1
[ascii addObject:@"â"]; // 226 0E2
[ascii addObject:@"ã"]; // 227 0E3
[ascii addObject:@"ä"]; // 228 0E4
[ascii addObject:@"å"]; // 229 0E5
[ascii addObject:@"æ"]; // 230 0E6
[ascii addObject:@"ç"]; // 231 0E7
[ascii addObject:@"è"]; // 232 0E8
[ascii addObject:@"é"]; // 233 0E9
[ascii addObject:@"ê"]; // 234 0EA
[ascii addObject:@"ë"]; // 235 0EB
[ascii addObject:@"ì"]; // 236 0EC
[ascii addObject:@"í"]; // 237 0ED
[ascii addObject:@"î"]; // 238 0EE
[ascii addObject:@"ï"]; // 239 0EF
// 0F0
[ascii addObject:@"ð"]; // 240 0F0
[ascii addObject:@"ñ"]; // 241 0F1
[ascii addObject:@"ò"]; // 242 0F2
[ascii addObject:@"ó"]; // 243 0F3
[ascii addObject:@"ô"]; // 244 0F4
[ascii addObject:@"õ"]; // 245 0F5
[ascii addObject:@"ö"]; // 246 0F6
[ascii addObject:@"÷"]; // 247 0F7
[ascii addObject:@"ø"]; // 248 0F8
[ascii addObject:@"ù"]; // 249 0F9
[ascii addObject:@"ú"]; // 250 0FA
[ascii addObject:@"û"]; // 251 0FB
[ascii addObject:@"ü"]; // 252 0FC
[ascii addObject:@"ý"]; // 253 0FD
[ascii addObject:@"þ"]; // 254 0FE
[ascii addObject:@"ÿ"]; // 255 0FF
NSInteger i;
for (i=0; i < self.length; i++) {
NSRange range;
range.location = i;
range.length = 1;
NSString *charString = [self substringWithRange:range];
for (NSInteger asciiIdx=0; asciiIdx < ascii.count; asciiIdx++) {
if ([charString isEqualToString:ascii[asciiIdx]]) {
unsigned char c = (unsigned char)asciiIdx;
output[i] = c;
break;
}
}
}
// Don't forget string termination
output[i] = 0;
return (const char*)&output[0];
}
@end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-09 14:14:38