-
@yossiz אמר בENCODING ללא ירידת שורה:
זה מה שאתה מקבל אחרי encodeUri
בדקתי, לא היה ירידת שורה לפני האינקוד,
אבל עם זהlet res = encodeURI(content.trim());
זה עובד
אבל עכשיו אני מנסה לשלוח מחרוזת שיש בה ירידת שורה באמצע, והוא לא נותן לי ככה %0D%0A וגם לא כךn/
-
@שאול-נ-י אמר בENCODING ללא ירידת שורה:
בדקתי, לא היה ירידת שורה לפני האינקוד,
אבל עם זה let res = encodeURI(content.trim()); זה עובד
אני נוטה להאמין למחשב יותר ממך...
(העובדה ש-trim עזר מוכיחה שצדקתי והיה ירידת שורה במחרוזת)אבל עכשיו אני מנסה לשלוח מחרוזת שיש בה ירידת שורה באמצע, והוא לא נותן לי ככה %0D%0A וגם לא כך n/
תביא קוד לדוגמה. אצלי המחשב מתנהג טוב.
encodeURI('123\r\n456') // '123%0D%0A456'
נ.ב. שים לב שלפעמים הפוקנציה הנכונה היא היא encodeUriComponent ולא encodeUri. ההבדלים, עיין בתיעוד.
-
@yossiz סליחה, שוב לא הסברתי את עצמי טוב
אחרי ה-encode אני מנסה לשלוח את זה לAPI אבל הAPI לא מוכן לקבל את זה
זה השגיאה {"responseStatus":"EXCEPTION","exceptionClass":"IllegalArgumentException","exceptionMessage":"Cannot parse JSON: Illegal unquoted character ((CTRL-CHAR, code 13)): has to be escaped using backslash to be included in string value\n at [Source: java.io.StringReader@21b03df3; line: 1, column: 41]","nestedException":null,"yemotAPIVersion":6}
ניסיתי לשנות ל n\ אז הוא אומר לי Invalid argument -
@שאול-נ-י ידידי...
אדם שרוצה להתעסק בתכנות חייב להיות מרובע.
לא סתם מרובע אלא עם פינות קוצניות שדוקרים לכל מי שנוגע.
יותר מרובע מריבוע.למה?
כי המחשב מרובע.
המחשב יותר מרובע מריבוע.
כמו הגולם המיתלוגי, המחשב עושה בדיוק מה שביקשנו ממנו. לא פחות ולא יותר.
כמו היקי הכי מעצבן ביקום. (מחילה מכל היקים...).כחלק ממרובעות הזאת אתה חייב לדייק בתכלית הדיוק בכל מה שנוגע למחשבים. הם לא סלחניים בקיצוניות.
תדמיין לעצמך שיש לך חבר שהוא יקי מעצבן כזה. האם היית מעז לדבר איתו רמזים וחצאי משפטים???
אחרי ההקדמה אני רוצה להסביר לך שכאשר אני קורא שאלה בנושא תכנות אני קורא את השאלה כמו מחשב.
כתבת:עכשיו אני מנסה לשלוח מחרוזת שיש בה ירידת שורה באמצע, והוא לא נותן לי ככה %0D%0A וגם לא כך n/
ניסיתי לענות על זה לפי איך שהבנתי את השאלה. טעיתי בהבנת השאלה. הייתי אמור לנחש מה זה "מנסה לשלוח"? לאן? איך? "והוא לא נותן לי". מי זה ה"הוא"? "ככה %0D%0A וגם לא כך n/" כלומר שניסית ככה? או שה"הוא" לא נותן לך את ה"ככה"?
גם ההבהרה שאתה מוסיף בפוסט השני לא מספיקה.
לא מספיק לכתוב מה השגיאה.
כדי ששום בר דעת יהיה מוכן לענות על השאלה בלי להסתכן בניחושים מיותרים וגוזלי זמן, הוא חייב לקבל פרטים מלאים עד כמה שידך מגעת.
שזה אומר:- בדיוק מה עשית
- מה צפית שיקרה
- מה קרה בפועל
וכל הנ"ל בכתיבה ברורה שלא משתמעת לשתי פנים
השאלות הכי טובות הם אלו שכוללים קוד קצר וקולע שמדגים את הבעיה.
(אגב, בנוסף, חוץ ממה שאתה חייב לכתוב את כל מה שקשור לנושא, יש גם דרישה לא לכתוב שום דבר מעבר למה שקשור.
הדרישה של "לא שום דבר מעבר" הוא כמעט באותה רמת חשיבות כמעט כמו הדרישה לכתוב את כל הפרטים.
חייבים להפשיט את השאלה מכל המסביב שלא קשור לענין.
האמת היא שאם היית קונה לעצמך את היכולת הזאת לדייק כל כך בשאלות שלך, לכאורה היית מגיע לתשובות בכוחות עצמך. כי היית מצליח למקד בדיוק איפה הבעיה.) -
@yossiz תודה
אני אנסה להסביר את עצמי למרות שאחד מהתכונות שלי הוא קושי בהסברה (לכל אדם יש חסרונות, לא?) וגם קושי בהבנה...בשאלות הראשונות שלי היה לי שאלה שאני מקבל את הקוד עם ירידת שורה בסוף
על זה עדיין לא קיבלתי תשובה סופית,
אתה טענת שצריך לומר שהיה במקור ירידת שורה, אבל אני ניסיתי לשלוח מייל לעצמי עם מילה אחד שאז בוודאי לא ירדתי שורה אבל לאחר שעשיתי ENCODE קיבלתי את המילה עם סימן ירידת שורה בסוף המילה, כזה "%0D%0A"
אז אולי צריך לומר שבכל ג'ימייל שאני שולח יש בסוף שורה ריקה או שגם זה לא?אחרי זה כשאמרת לי להשתמש עם content.trim() הסתדר השורה חדשה בסוף
ואז עברתי לשלב הבא שרציתי, וזה לשלוח את הטקסט מהמייל לאחר שעבר ENCODE ואז נתקלתי בבעיה האמיתית, ה-API שאיליו אני רוצה לשלוח את הטקסט מהמייל לאחר שעשיתי ENCODE לא מרשה לי לשלוח לו טקסט עם ירידת שורה באמצעאז האמת שזה כבר נושא חדש, איך לשלוח טקסט כזה, אבל אצלי זה היה הכל פונקציה אחת אז שאלתי באותו נושא
אז יש לי שאלה, האם זה שה-API לא נותן לי לשלוח טקסט שלם שיש בתוכו כמה שורות זה קשור לAPI וצריך לדעת איך לשלוח לה-API הספיציפי,
או שזה בכלל קשור לזה שזה JSONפשוט כדי שאני אדע מה לשאול..
-
@שאול-נ-י אתה מעביר בסופו של דבר לAPI שלך טקסט שלא עבר encodeURI. אין בפלט של encodeURI שום קפיצת שורה, לא בסוף וגם לא באמצע.
ומתחיל להימאס השאלה בלי לחשוף כלום (סליחה שאני לא קונה את הקושי בהסברה ואת חסרונותיך וכולי), אנחנו נאבד את הסבלנות אליך גם לשאלות הבאות. -
@שאול-נ-י אמר בENCODING ללא ירידת שורה:
על זה עדיין לא קיבלתי תשובה סופית,
לדידי התשובה היא סופית אני לא רואה אפשרות אחרת.
אז אולי צריך לומר שבכל ג'ימייל שאני שולח יש בסוף שורה ריקה
אולי
בכל מקרה לשאלה השנייה:
ה-API שאיליו אני רוצה לשלוח את הטקסט מהמייל לאחר שעשיתי ENCODE לא מרשה לי לשלוח לו טקסט עם ירידת שורה באמצע
אם תדייק בנוסח השגיאה תראה שלא שלחת JSON תקין. זה לא שה-API בודק ירידות שורות. הוא בודק סה"כ אם ה-JSON תקין או לא.
דוגמה למחרוזת JSON עם ירידת שורה בתוך קוד JS:JSON.parse('{ "string_with_linebreak": "abc\\nefg" }'); // {string_with_linebreak: 'abc\nefg'}
שים לב שהייתי צריך להוסיף לוכסן פעמיים. (הבנת למה?)
אם תביא דוגמת קוד נוכל להבין יותר בקלות איפה נכשלת.
-
@dovid אמר בENCODING ללא ירידת שורה:
הבנת מה הוא רצה עם ג'מייל?
לא בטוח... אני מנחש שהוא עובד עם app scripts של גוגל.
@שאול-נ-י שים לב, שהשאלות שלך מאוד קשים להבנה. @dovid צודק שהוא יותר טוב ממני, ולא רק בזה... ועדיין הוא לא מצליח לפענח את השאלה שלך.
בד"כ קשיי הסברה מגיעים מעמעום בהבנה. אם תרצה להצליח בעולם הזה של תכנות כדאי לך מאוד לחדד את ההבנה שלך בנושאים ולא סתם להעתיק קוד בלי להבין.
המחשבה על כתיבת כמה שורות של קוד ובכך לבנות אוטומציה שלמה מאוד מאוד מושכת. ואחרי לימוד יסודי באמת אפשר להגיע לדברים מדהימים מאוד שבעבר יכלו רק לחלום עליהם. אבל אל תתן לחזון של היעד להסתיר ממך את הכביש שמוליך לשם. זה מגיע רק עם עבודה יסודית. אחרת תתקע בכל צעד ושעל. -
@שאול-נ-י אמר בENCODING ללא ירידת שורה:
בדקתי, לא היה ירידת שורה לפני האינקוד,
כמובן, איך תדע אם היה או לא ברגע שמדובר בשורה ריקה?
תנסה אולי להדפיס מיד אחרי זה עוד משהו וליראות האם הוא צמוד לשורה התחתונה מהתוכן של ה content או שהוא דילג שורה. -
אני חושב שיש צורך שאתנצל בפני חברי הפורום היקרים כ"א בשמו הטוב יבורך ובפרט ל@yossiz ול@dovid שגזלו מזמנם היקר לענות לי על השאלות ברצון טוב לעזור..
בו בזמן שכמו ש@yossiz אמר@yossiz אמר בENCODING ללא ירידת שורה:
בד"כ קשיי הסברה מגיעים מעמעום בהבנה.
וזה אכן היה המקרה שלי.
אני בכל זאת אנסה להסביר מה קרה לי פה
אני רציתי לשלוח בAPI טקסט מסיום שהיה צריך לעבור encodeURI לפני השליחה, אז השתמשתי בencodeURI בשרת (app scripts של גוגל) אבל מה, בפלט של השרת כשהגיע לירידת שורה הוא תירגם את זה ל '%0D%0A' ומצד שני השרת API שקיבל את הJSON לא רצה לקבל את זה וטען שזה לא תקין
אז אני, במקום לחשוב איך לתקן את זה ולשאול שאלה ספציפית, רציתי לעקוף את הבעיה ע"י לא לתת לו לרדת שורה, וחשבתי שכך הבעיה תסתדר, ואת זה שאלתי פה בפורום איך לעשות שלא יהיה ירידת שורה.
אבל מה? בסוף הבנתי שיש פעמים שאני חייב לשלוח כמה שורות, ולא יעזור לי לעשות פתרונות כאלו, אז ערבבתי את הנושא והתחלתי לשאול איך כן לשלוח את הAPI תקין, ולא הבנתי ולא הובנתיבסוף עשיתי replace מ '%0D%0A' ל '%5C%5Cn' ואז הכל הסתדר, אבל שוב, סליחה מכל אלו שניסו לעזור ככל יכולתם ולא אפשרתי להם
(נ.ב. מקווה שהפוסט הזה כן מובן) -